r - 按 data.table 中的所有列分组

标签 r data.table

我正在与 iris 一起工作R中的数据表。

为了提醒它的外观,我在这里粘贴了六五行

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1:          5.1         3.5          1.4         0.2  setosa
2:          4.9         3.0          1.4         0.2  setosa
3:          4.7         3.2          1.3         0.2  setosa
4:          4.6         3.1          1.5         0.2  setosa
5:          5.0         3.6          1.4         0.2  setosa
6:          5.4         3.9          1.7         0.4  setosa

我想计算按所有列分组的行数。当然我们可以把所有的变量写在by , 像这样:
iris[, .(Freq = .N), by = .(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species)]



   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Freq
1:          5.1         3.5          1.4         0.2  setosa    1
2:          4.9         3.0          1.4         0.2  setosa    1
3:          4.7         3.2          1.3         0.2  setosa    1
4:          4.6         3.1          1.5         0.2  setosa    1
5:          5.0         3.6          1.4         0.2  setosa    1
6:          5.4         3.9          1.7         0.4  setosa    1

但是,我想知道是否有一种方法可以按所有变量分组而无需键入所有列名?

最佳答案

如果您要查找重复项,uniqueN将默认使用所有列:

uniqueN(as.data.table(iris))
# [1] 149

这不会直接回答您的问题,但它可能是完成您最初尝试做的事情的更直接方式。

同样,如果您要查找重复的行,可以使用 duplicateddata.table同样默认使用所有列的方法:
iris[duplicated(iris)]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
# 1:          5.8         2.7          5.1         1.9 virginica

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

相关文章:

r - 使用 data.table 滞后面板数据

R:将曲线拟合到点:使用什么线性/非线性模型?

r - 使用函数参数作为 R 中新数据框的名称

r - 如何检查 R 中表格的精确匹配?

r - 使用 data.table 优化分组依据

r - R data.table使用列作为参数将函数应用于行

R Shiny 的navbarPage右对齐标签

r - 如何在给定索引数据帧的情况下创建 cclust 对象

r - 为值的子集创建游程 ID

r - 比熔化和 rbind 更快的替代方案