この幅の広いデータを再形成するにはどうすればよいですか: (csv ファイルから)
Name Code Indicator 1960 1961 1962
この長いフォーマットに?
Name Code Indicator Year
この幅の広いデータを再形成するにはどうすればよいですか: (csv ファイルから)
Name Code Indicator 1960 1961 1962
この長いフォーマットに?
Name Code Indicator Year
reshape2
パッケージはこれを関数でうまく実行しますmelt
。
yourdata_melted <- melt(yourdata, id.vars=c('Name', 'Code', 'Indicator'), variable.name='Year')
value
これにより、ドロップできる列が追加されます。yourdata_melted$value <- NULL
そして、ベース R 関数を使用するためのキャンペーンを継続したいという理由だけで:
テストデータ:
test <- data.frame(matrix(1:12,nrow=2))
names(test) <- c("name","code","indicator","1960","1961","1962")
test
name code indicator 1960 1961 1962
1 1 3 5 7 9 11
2 2 4 6 8 10 12
さっさと整形しろ!
reshape(
test,
idvar=c("name","code","indicator"),
varying=c("1960","1961","1962"),
timevar="year",
v.names="value",
times=c("1960","1961","1962"),
direction="long"
)
# name code indicator year value
#1.3.5.1960 1 3 5 1960 7
#2.4.6.1960 2 4 6 1960 8
#1.3.5.1961 1 3 5 1961 9
#2.4.6.1961 2 4 6 1961 10
#1.3.5.1962 1 3 5 1962 11
#2.4.6.1962 2 4 6 1962 12