r - 按 data.table 中的所有列分组
问题描述
我正在使用R 中的iris
data.table。
为了提醒它的外观,我在这里粘贴了六五行
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
推荐阅读
- c# - 如何在 .NET 中将字符串转换为 JSON 对象?
- jquery - 单击函数搜索 Json 对象中的特定元素
- android - 反应原生 android TransactionTooLargeException
- r - 是否有一个 R 函数来查找共享相同变量值的行的实例
- ansible - 如何使用动态清单中的主机变量
- javascript - 过滤制表器中的所有数据
- python - 如何打乱列表,使每个特定长度的子列表都有唯一的项目?
- python - 轮播在 Windows 中运行良好,但在 android 中卡住了
- java - 在 WildFly/CXF Webservice 客户端中使用 DefaultSSLSocketFactory
- css - 在 Safari 的 flexbox 中拉伸图像