「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で確認しています。
パッケージのインストール
下記コマンドを実行してください。
[code language="R"] #パッケージのインストール install.packages("tidyverse") [/code]
データ処理例
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み 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
少しでも、あなたの解析が楽になりますように!!