ごろごろノート

種々雑多に関心の向いたテーマについてつづる実験ノートです

【R】WIDE形式をLONG形式に変換する 

WIDE形式のデータフレームをLONG形式に変換する

パネルデータ分析を行うときLONG形式のデータフレームが必要になる。

一般的に作成されるデータフレームはWIDE形式なので、これらをLONG形式に変換する必要がある。

ここではそのやり方について実験してみる。

引用元はこちら

#WIDE形式のデータフレームの作成
olddata_wide <- read.table(header=TRUE, text='
subject sex control cond1 cond2
1 M 7.9 12.3 10.7
2 F 6.3 10.6 11.1
3 F 9.5 13.1 13.8
4 M 11.5 13.4 12.9
')

#列名subjectを確実にfactor型にする
olddata_wide$subject <- factor(olddata_wide$subject)

#データフレームの確認
olddata_wide
#> subject sex control cond1 cond2
#> 1 1 M 7.9 12.3 10.7
#> 2 2 F 6.3 10.6 11.1
#> 3 3 F 9.5 13.1 13.8
#> 4 4 M 11.5 13.4 12.9

#tidyrの読み込み
library(tidyr)

# The arguments to gather():
# - data: Data object
# - key: Name of new key column (made from names of data columns)
# - value: Name of new value column
# - ...: Names of source columns that contain values
# - factor_key: Treat the new key column as a factor (instead of character vector)
data_long <- gather(olddata_wide, condition, measurement, control:cond2, factor_key=TRUE)

#データフレームの確認
data_long
# subject sex condition measurement
#1 1 M control 7.9
#2 2 F control 6.3
#3 3 F control 9.5
#4 4 M control 11.5
#5 1 M cond1 12.3
#6 2 F cond1 10.6
#7 3 F cond1 13.1
#8 4 M cond1 13.4
#9 1 M cond2 10.7
#10 2 F cond2 11.1