R重新排序表

时间:2014-04-09 11:21:40

标签: r reshape

我有下表:

NDVI_2009 NDVI_2010 NDVI_2011 NDVI_2012 NDVI_2013 SS_GROUP
-0.0280374 0.1810340 -0.0206186 -0.0319149 0.00529101 6
-0.0283019 0.1610170 -0.0452261 -0.0222222 0.00000000 3
-0.0864198 0.1026620 -0.0978723 -0.0710901 -0.09090910 5
-0.1192660 0.0762332 -0.1256280 -0.1340210 -0.12562800 5
-0.1250000 0.0701754 -0.1330050 -0.1269040 -0.12315300 6
-0.1181820 0.0810811 -0.1356780 -0.1370560 -0.13000000 6
-0.0280374 0.1810340 -0.0206186 -0.0319149 0.00529101 4
-0.0283019 0.1610170 -0.0452261 -0.0222222 0.00000000 4
-0.0864198 0.1026620 -0.0978723 -0.0710901 -0.09090910 5
-0.1192660 0.0762332 -0.1256280 -0.1340210 -0.12562800 2
-0.1250000 0.0701754 -0.1330050 -0.1269040 -0.12315300 1
-0.1181820 0.0810811 -0.1356780 -0.1370560 -0.13000000 1

现在我想将其重新排列为以下内容:

NDVI_GROUP SS_GROUP Value
NDVI_2009 1 0.08192981
NDVI_2009 1 -1.11667766
NDVI_2009 1 0.34117450
NDVI_2009 2 -0.42321236
NDVI_2009 2 0.56033804
NDVI_2009 2 0.32326817
...continuing

意思是:

第一栏=年

第二栏=组

第三栏=价值

按顺序递增。

首先是2009年第1组的所有值,然后是2009年第2组的所有值,依此类推。然后是2010年的同样......等等。

我只是找不到用R解决它的正确命令 有没有人可能会给我一个提示? 非常感谢...

谢谢, 汉纳斯

1 个答案:

答案 0 :(得分:0)

这是一个问题,通常是来自" reshape2"的melt。包:

library(reshape2)
X <- melt(mydf, id.vars="SS_GROUP")
X <- X[order(X$variable, X$SS_GROUP), c("variable", "SS_GROUP", "value")]
head(X)  # View the first few rows
#     variable SS_GROUP      value
# 11 NDVI_2009        1 -0.1250000
# 12 NDVI_2009        1 -0.1181820
# 10 NDVI_2009        2 -0.1192660
# 2  NDVI_2009        3 -0.0283019
# 7  NDVI_2009        4 -0.0280374
# 8  NDVI_2009        4 -0.0283019