我有一个矩阵(d),看起来像:如何重塑一个矩阵
d <-
as.matrix(read.table(text = "
month Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13
X10 10 7.04 8.07 9.4 8.17 9.39 8.13 9.43 9.06 8.59 9.37 9.79 8.47 8.86
X11 11 12.10 11.50 12.6 13.70 11.90 11.50 13.10 17.20 19.00 14.60 13.70 13.20 16.10
X12 12 24.00 22.00 22.2 20.50 21.60 22.50 23.10 23.30 30.50 34.10 36.10 37.40 28.90
X1 1 18.30 16.30 16.2 14.80 16.60 15.40 15.20 14.80 16.70 14.90 15.00 13.80 15.90
X2 2 16.70 14.40 15.3 14.10 15.50 16.70 15.20 16.10 18.00 26.30 28.00 31.10 34.20",
header=TRUE))
从Q1将Q31(其天每月)。我想得到的是:
month day Q
10 1 7.04
10 2 8.07
等31天和12个月。
我曾尝试使用下面的代码尝试:
reshape(d, direction="long", varying = list(colnames(d)[2:32]), v.names="Q", idvar="month", timevar="day")
,但我得到的错误:
Error in d[, timevar] <- times[1L] : subscript out of bounds
谁能告诉我什么是错误的代码?我真的不明白关于“重塑”的帮助文件,这有点令人困惑......谢谢!
对于'reshape()',为了正确处理'vary'中的列名,这仍然需要一个'sep =“”'... – 2012-01-31 18:48:03
谢谢!它完美地工作(没有sep =“”) – sbg 2012-01-31 19:58:21
@ JoshO'Brien,因为'v.names'被指定,'reshape'没有试图确定原始列名的名字,所以不需要'sep'。 – 2012-01-31 21:45:24