在excel或R中从一列到另一列的数据透视表

我有一个这样的标题表

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

我想将此表转换为

 Id time xy 

在Excel或R中执行此操作的最佳方法是什么?

像这样使用base 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) ) 

导致:

  Id time xy 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 
Interesting Posts