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


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

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

パッケージバージョンは1.1.1。windows 10のR version 3.4.2で動作を確認しています。


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

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

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



データ処理例

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

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

###データ例の作成#####
n <- 300 TestData <- data.frame(ID = 1:n, Group = sample(c("A", "B", "C"), n, replace = TRUE), Time_A = rnorm(n), Time_B = rnorm(n)) #欠損値を代入 #パッケージのインストール #install.packages("ForImp") #パッケージの読み込み library("ForImp") TestData[, 3:4] <- missingmat2(TestData[, 3:4], missing = 150) #確認 head(TestData) ID Group Time_A Time_B 1 1 C NA 0.2331484 2 2 B 0.5341020 1.3262983 3 3 C NA -0.9206614 4 4 A NA 0.9512269 5 5 C -0.1219244 0.1841542 6 6 C 1.0625370 0.8904637 ####### ###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) ######## #確認 tbl_df(ResultData) # A tibble: 3 x 6 Group Time_A Time_B Count_NA Time_A_Sum t_test <fctr> <list> <list> <int> <dbl> <dbl> 1 A <dbl [105]> <dbl [105]> 50 -6.193642 0.4612757 2 B <dbl [106]> <dbl [106]> 53 -16.082747 0.1794329 3 C <dbl [89]> <dbl [89]> 47 4.480483 0.7827850 #もちろんエクセルで出力可能 #install.packages("openxlsx") library("openxlsx") write.xlsx(ResultData, "ResultData.xlsx") [/code]


出力例

・結果はもちろんエクセルで出力可能です。


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

関連コンテンツ


スポンサードリンク