【问题标题】:R reorder tableR重新排序表
【发布时间】:2014-04-09 11:21:40
【问题描述】:

我有下表:

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 解决它。 有没有大神可以指点一下??? 真的很感激...

谢谢, 汉内斯

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    这是使用“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
    

    【讨论】:

    • 如果您将 variable.name="NDVI_GROUP" 添加到 melt 调用中,您会得到正确命名的列。
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2018-12-06
    • 2013-09-19
    • 1970-01-01
    • 2023-02-21
    • 2019-09-18
    相关资源
    最近更新 更多