【问题标题】:Collapsing Table in R [duplicate]R中的折叠表[重复]
【发布时间】:2019-09-01 13:25:59
【问题描述】:

我正在尝试在 R 中总结一个表格,但不确定处理它的最佳方法。

我已经尝试过使用 dplyr 总结,但它似乎效率不高,也不明显我需要做什么。

起始数据

table <- data.frame(Company1 = c("A","A","C","C"), Company2 = c("B", "B", 
"D", "D"), target = c("sales", "turnover", "sales", "turnover"), result = 
c(200, 5000, 300, 7500))


     Company1 Company2   target result
 1        A        B    sales    200
 2        A        B turnover   5000
 3        C        D    sales    300
 4        C        D turnover   7500

预期

     Company1    Company2       Sales        Turnover
 1        A         B         sales - 700  turnover - 5000
 2        C         D         sales - 300  turnover - 7500

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以使用tidyrunite组合resulttarget列,然后spread得到宽格式数据。

    library(tidyr)
    
    table %>%
      unite(result, target, result, sep = "-", remove = FALSE) %>%
      spread(target, result)
    
    #  Company1 Company2     sales      turnover
    #1        A        B sales-200 turnover-5000
    #2        C        D sales-300 turnover-7500
    

    【讨论】:

    • 非常感谢。除了填充功能之外,对 tidyr 不太熟悉。没有意识到它必须提供多少。再次感谢!
    【解决方案2】:

    我们可以从data.table使用dcast

    library(data.table)
    dcast(setDT(table)[, new := paste(target, result, sep = ' - ')], 
          Company1 + Company2 ~ target, value.var = 'new')
    #  Company1 Company2       sales        turnover
    #1:        A        B sales - 200 turnover - 5000
    #2:        C        D sales - 300 turnover - 7500
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多