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")

出力例

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


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

スポンサードリンク

関連コンテンツ


スポンサードリンク