Rでコマンド:「dplyr,tidyr」パッケージを使ったデータ処理例


「dplyr,tidyr」パッケージを使ったデータ処理例です。group_by,summarise,list,mutateコマンドの利用がポイントです。工夫することで紹介したt検定や合計以外の計算も可能です。なお、「tidyverse」パッケージで一括インストールしています。

・「tidyverse」パッケージ
 https://www.tidyverse.org/

パッケージバージョンは1.3.1。パッケージのバージョンは1.3.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("tidyverse")

データ処理例

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("tidyverse")

###データ例の作成#####
set.seed(1234)
n <- 300
TestData <- tibble(ID = 1:n,
                   Group = sample(c("A", "B", "C"), n, replace = TRUE),
                   Time_A = rnorm(n), Time_B = rnorm(n))
#欠損値を代入
#パッケージのインストール
#ForImpパッケージがなければインストール
if(!require("ForImp", quietly = TRUE)){
  install.packages("ForImp");require("ForImp")
}
TestData[, 3:4] <- missingmat2(TestData[, 3:4], missing = 150)
#######

###dplyr,tidyrを使ったデータ処理#####
ResultData <- TestData %>%
  #group_byコマンドでグループ化
  group_by(Group) %>%
  #summarise,listコマンドでグループに対する値をまとめる
  summarise(Time_A = list(Time_A), Time_B = list(Time_B)) %>%
  #グループ化が解除されるので再度グループ化
  group_by(Group) %>%
  #mutateコマンドで色々な計算が可能
  #Time_AとTime_Bに含まれる欠損値
  mutate(Count_NA = sum(is.na(unlist(Time_A))) + sum(is.na(unlist(Time_B)))) %>%
  #Time_A合計
  mutate(Time_A_Sum = sum(unlist(Time_A), na.rm = TRUE)) %>%
  #Time_AとTime_Bで対応のあるt検定
  mutate(t_test = t.test(x = unlist(Time_A), y = unlist(Time_B),
                         var.equal = TRUE, paired = TRUE)$p.value)
########

#確認
ResultData
# A tibble: 3 x 6
# Groups:   Group [3]
Group Time_A      Time_B      Count_NA Time_A_Sum t_test
<chr> <list>      <list>         <int>      <dbl>  <dbl>
1 A     <dbl [92]>  <dbl [92]>        52     0.0480  0.591
2 B     <dbl [107]> <dbl [107]>       48    -7.12    0.767
3 C     <dbl [101]> <dbl [101]>       50     5.19    0.333

少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

スポンサードリンク