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

Rの解析に役に立つ記事
スポンサーリンク

「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))
#&#27424;&#25613;&#20516;&#12434;&#20195;&#20837;
#&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
#ForImp&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
if(!require("ForImp", quietly = TRUE)){
  install.packages("ForImp");require("ForImp")
}
TestData[, 3:4] <- missingmat2(TestData[, 3:4], missing = 150)
#######

###dplyr,tidyr&#12434;&#20351;&#12387;&#12383;&#12487;&#12540;&#12479;&#20966;&#29702;#####
ResultData <- TestData %>%
  #group_by&#12467;&#12510;&#12531;&#12489;&#12391;&#12464;&#12523;&#12540;&#12503;&#21270;
  group_by(Group) %>%
  #summarise,list&#12467;&#12510;&#12531;&#12489;&#12391;&#12464;&#12523;&#12540;&#12503;&#12395;&#23550;&#12377;&#12427;&#20516;&#12434;&#12414;&#12392;&#12417;&#12427;
  summarise(Time_A = list(Time_A), Time_B = list(Time_B)) %>%
  #&#12464;&#12523;&#12540;&#12503;&#21270;&#12364;&#35299;&#38500;&#12373;&#12428;&#12427;&#12398;&#12391;&#20877;&#24230;&#12464;&#12523;&#12540;&#12503;&#21270;
  group_by(Group) %>%
  #mutate&#12467;&#12510;&#12531;&#12489;&#12391;&#33394;&#12293;&#12394;&#35336;&#31639;&#12364;&#21487;&#33021;
  #Time_A&#12392;Time_B&#12395;&#21547;&#12414;&#12428;&#12427;&#27424;&#25613;&#20516;
  mutate(Count_NA = sum(is.na(unlist(Time_A))) + sum(is.na(unlist(Time_B)))) %>%
  #Time_A&#21512;&#35336;
  mutate(Time_A_Sum = sum(unlist(Time_A), na.rm = TRUE)) %>%
  #Time_A&#12392;Time_B&#12391;&#23550;&#24540;&#12398;&#12354;&#12427;t&#26908;&#23450;
  mutate(t_test = t.test(x = unlist(Time_A), y = unlist(Time_B),
                         var.equal = TRUE, paired = TRUE)$p.value)
########

#&#30906;&#35469;
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

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

タイトルとURLをコピーしました