【问题标题】:Adding column sums to a data.table as a new row at the end在末尾将列总和作为新行添加到 data.table
【发布时间】:2022-11-28 09:44:54
【问题描述】:

我正在对 data.table 进行一些操作并获得结果。到目前为止,一切都很好。接下来,我希望结果也显示某些列的总和,但我无法让它工作。

我按 x1=1 的行过滤表,并按 Group1 计算指标:

dt[x1 == 1, .N, by = c("Group1")][, 
  "%" := round(N /sum(N) * 100, 0)] [
  ]

给予

   Group1 N  %
1:     2 6 40
2:     1 6 40
3:     3 2 13
4:     5 1  7

我只想在上表中添加一行,给出所有列的总和。

我可以做

colSums(.Last.value)

并在一个单独的控制台中获得答案,但是如果我只想将一个新行附加到上表本身,就像这样:

   Group1 N  %
1:     2 6 40
2:     1 6 40
3:     3 2 13
4:     5 1  7  
ColSum: -- 15 100

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    我们可能需要rbind

    rbind(dt, dt[x1 == 1, .N, by = c("Group1")][, 
         .(Group1 = "RowSum: NA", 
           N = sum(N), `%` = round(N /sum(N) * 100, 0))], fill = TRUE)
    

    对于更新

    rbind(dt, dt[, c(list(Group1 = "ColSum: --"), lapply(.SD, sum)), .SDcols = -1])
    

    【讨论】:

    • 请参阅上面的编辑。
    猜你喜欢
    • 2012-04-30
    • 2012-10-02
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2015-09-27
    • 2013-05-23
    相关资源
    最近更新 更多