r - data.table-按除一列以外的所有元素分组

标签 r data.table

我可以使用data.table对除一列以外的所有列进行分组吗?我有很多专栏文章,所以我宁愿避免写出所有colnames

原因是我想将表中的重复项折叠起来,在该表中我知道一列没有相关性。

library(data.table)

DT <- structure(list(N = c(1, 2, 2), val = c(50, 60, 60), collapse = c("A", 
"B", "C")), .Names = c("N", "val", "collapse"), row.names = c(NA, 
-3L), class = c("data.table", "data.frame"))

> DT
   N val collapse
1: 1  50        A
2: 2  60        B
3: 2  60        C

也就是说,给定DT,是否有类似DT[, print(.SD), by = !collapse]这样的内容:
> DT[, print(.SD), .(N, val)]
   collapse
1:        A
   collapse
1:        B
2:        C

无需实际指定.(N, val)?我意识到我可以通过复制和粘贴列名来做到这一点,但是我认为可能也有一些优雅的方法可以做到这一点。

最佳答案

要按除一列以外的所有列进行分组,可以使用:

by = setdiff(names(DT), "collapse")

说明:setdiff采用setdiff(x, y)的一般形式,该格式返回x中没有的所有y值。在这种情况下,这意味着将返回除collapse -column之外的所有列名。

两种选择:
# with '%in%'
names(dt1)[!names(dt1) %in% 'colB']

# with 'is.element'
names(dt1)[!is.element(names(dt1), 'colB')]

关于r - data.table-按除一列以外的所有元素分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440399/

相关文章:

c++ - 局部回归和局部似然法的实现

R-Caret 相当于 Scikit-Learn 的 DummyClassifier?

r - ggplot2/ggsurvplot : Vectorized input to `element_text()` is not officially supported

r - 如何使用 R 中的过渡日期数据创建面板数据集?

r - data.table、readr 和 dplyr 之间有冲突吗?

javascript - R 中的 googleVis 数据类型转换似乎不起作用

r - 在控制台输出中保留长注释。不会成为 ".... [TRUNCATED]"的受害者

r - data.table:通过键检查所有行是否为 NA

r - 在 data.table v1.8.10 vs v1.9.2 中对非常小的数字(例如 1e-28)和 0.0 进行分组

在 R 中的数据表中按降序重新标记簇(列)