【问题标题】:Re-assemble dataframe by index按索引重新组装数据帧
【发布时间】:2017-05-16 10:58:43
【问题描述】:

我要做的是获取一个数据框,其中第一列中的重复行充当索引以复制其他列的相应行。我知道这听起来很混乱,而我无法准确地说明这个问题是我遇到这么多问题的原因之一。 我将在下面提供一个可重现的示例。

structure(list(Var1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 
16L, 17L), .Label = c("2016-01", "2016-02", "2016-03", "2016-04", 
"2016-05", "2016-06", "2016-07", "2016-08", "2016-09", "2016-10", 
"2016-11", "2016-12", "2017-01", "2017-02", "2017-03", "2017-04", 
"2017-05"), class = "factor"), Var2 = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L
), .Label = c("B2B", "B2C", "B2K"), class = "factor"), Freq = c(5L, 
13L, 8L, 13L, 36L, 5L, 18L, 1L, 12L, 24L, 22L, 6L, 24L, 15L, 
11L, 26L, 1L, 338L, 285L, 291L, 232L, 142L, 42L, 92L, 9L, 46L, 
34L, 45L, 35L, 30L, 31L, 36L, 56L, 9L, 0L, 1L, 0L, 0L, 0L, 0L, 
7L, 0L, 13L, 0L, 1L, 0L, 0L, 0L, 0L, 2L, 0L)), .Names = c("Var1", 
"Var2", "Freq"), class = "data.frame", row.names = c(NA, -51L
))

基本上我想要的是:

  • 在 Var1 上没有重复日期
  • 在重复日期的行上,取 Var2 和 Freq 的值,并在两个新列中将它们复制到唯一日期的索引中
  • 必须对 Var2 的每个不同级别执行此操作

提前谢谢你!

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我认为您试图解释的是 dcast。这最终会如你所愿吗?

    library(reshape2)
    dcast(x,Var1~Var2,value.var="Freq")
    

    【讨论】:

      【解决方案2】:

      base R 选项将是

      xtabs(Freq~Var1 + Var2, df1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        • 2020-04-22
        • 2023-03-30
        • 2023-01-12
        • 1970-01-01
        • 2021-07-23
        相关资源
        最近更新 更多