在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