1

この幅の広いデータを再形成するにはどうすればよいですか: (csv ファイルから)

Name    Code    Indicator     1960    1961    1962  

この長いフォーマットに?

Name    Code    Indicator     Year
4

3 に答える 3

7

reshape2パッケージはこれを関数でうまく実行しますmelt

yourdata_melted <- melt(yourdata, id.vars=c('Name', 'Code', 'Indicator'), variable.name='Year')

valueこれにより、ドロップできる列が追加されます。yourdata_melted$value <- NULL

于 2012-12-13T20:20:09.883 に答える
5

そして、ベース 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
于 2012-12-14T03:07:39.160 に答える