在R 的数据框中将指定列合并为一列

编程语言 2026-07-09

在下列表格中

         0    10    20    31    32    33
  0  20267   193    22   140   124   110
  18     5     0     0     0     0     0

我想把列名大于等于20的列合并成一个列,其值为这些列的和,也就是

         0    10   20+
  0  20267   193   396
  18     5     0     0

我已经看到,vcdExtra::collapse.table 可以做到这一点,但这属于一个基本功能,应该有一种仅用base R就能实现的简单方法。有什么建议吗?

以下是使用 dput() 打印的表格:

structure(c(20267L, 5L, 193L, 0L, 22L, 0L, 140L, 0L, 124L, 0L, 
110L, 0L), dim = c(2L, 6L), dimnames = structure(list(c("0", 
"18"), c("0", "10", "20", "31", "32", "33")), names = c("", ""
)), class = "table")

解决方案

可以尝试以下方法

num <- as.numeric(colnames(tb)) > 19
res <- cbind(tb[, !num], '20+'=rowSums(tb[, num]))

得到

> res
       0  10 20+
0  20267 193 396
18     5   0   0
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章