0

このようなヘッダーを持つテーブルがあります

Id x.1960 x.1970 x.1980 x.1990 x.2000 y.1960 y.1970 y.1980 y.1990 y.2000

このテーブルを次のようにピボットしたい

Id time x y

ExcelまたはRでこれを行う最良の方法は何ですか?

4

1 に答える 1

4

ベース R を使用したこのようなものreshape

最初にいくつかのデータを取得します

test <- read.table(text="Id x.1960 x.1970 x.1980 x.1990 x.2000 y.1960 y.1970 y.1980 y.1990 y.2000
a 1 2 3 4 5 6 7 8 9 10
b 10 20 30 40 50 60 70 80 90 100",header=TRUE)

次に、形状を変更します。

reshape(
  test,
  idvar="Id",
  varying=list(2:6,7:11),
  direction="long",
  v.names=c("x","y"),
  times=seq(1960,2000,10)
)

または、区切り記号reshapeに基づいて名前を自動的に推測します。.

reshape(
  test,
  idvar="Id",
  varying=-1,
  direction="long",
  sep="."
)

その結果:

       Id time  x   y
a.1960  a 1960  1   6
b.1960  b 1960 10  60
a.1970  a 1970  2   7
b.1970  b 1970 20  70
a.1980  a 1980  3   8
b.1980  b 1980 30  80
a.1990  a 1990  4   9
b.1990  b 1990 40  90
a.2000  a 2000  5  10
b.2000  b 2000 50 100
于 2013-04-09T03:13:42.127 に答える