【问题标题】:program to pivot data in R在 R 中透视数据的程序
【发布时间】:2016-03-28 03:34:40
【问题描述】:

我有一个如下所示的数据集:

item     01/02/2016   01/03/2016   01/04/2016
-------     ---------    ---------    ---------- 
 juice         0           0            4 
 cola          1           3            6
 bananas       5           9            1 

我想以这样的方式旋转数据,最终结果如下所示:

 item   date             amount 
-------  -----          ------
 juice   01/02/2016       0
 juice   01/03/2016       0
 juice   01/04/2016       4
 cola    01/02/2016       1
 cola    01/03/2016       3
 cola    01/04/2016       6
 bananas 01/02/2016       5
 bananas 01/03/2016       9
 bananas 01/04/2016       1

我一直在用 excel 做这件事,但我想编写一个程序来自动在 R 中做这件事。我该怎么做?

谢谢!

【问题讨论】:

  • 查看“reshape2”或“data.table”中的melt,或查看“tidyr”中的gather
  • 在基础 R 中,stackcbind 的组合应该可以解决问题。

标签: r


【解决方案1】:

试试这个,但是变量名不能是日期,所以reshaping后把变量名重新映射到日期:

 > df
         item d01 d02 d03
    1   juice   0   0   4
    2    cola   1   3   6
    3 bananas   5   9   1
    > library(reshape2)
    > df2 <- melt(df, id.vars=1)
    > df2
         item variable value
    1   juice      d01     0
    2    cola      d01     1
    3 bananas      d01     5
    4   juice      d02     0
    5    cola      d02     3
    6 bananas      d02     9
    7   juice      d03     4
    8    cola      d03     6
    9 bananas      d03     1
    > df2[order(df2$item),]
         item variable value
    3 bananas      d01     5
    6 bananas      d02     9
    9 bananas      d03     1
    2    cola      d01     1
    5    cola      d02     3
    8    cola      d03     6
    1   juice      d01     0
    4   juice      d02     0
    7   juice      d03     4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2019-01-04
    相关资源
    最近更新 更多