我正在与 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
这不会直接回答您的问题,但它可能是完成您最初尝试做的事情的更直接方式。
同样,如果您要查找重复的行,可以使用
duplicated
的 data.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/