R data.table 按组计算多列中的唯一值

标签 r count data.table unique

> require(data.table)
> have <- data.table(ID = c(1,1,1,2,2)
+                      , colA = c("A","B","A","A","A")
+                      , colB = c("C","A","B","B","C"))
> have
   ID colA colB
1:  1    A    C
2:  1    B    A
3:  1    A    B
4:  2    A    B
5:  2    A    C
> want <- data.table(ID = c(1,2), UnN = c(3,3))
> want
   ID UnN
1:  1   3
2:  2   3

我有一个数据表“有”,我想按组“ID”计算多个列“colA”和“colB”中的唯一值。如何实现?

不确定为什么以下内容不起作用:

have[, UnN = uniqueN(c("colA","colB")), by = C("ID")]

最佳答案

删除列名称周围的引号,以便列可以在传递给 uniqueN 函数之前被评估为向量,否则它们被评估为文字字符向量:

have[, .(UnN = uniqueN(c(colA, colB))), ID]
#   ID UnN
#1:  1   3
#2:  2   3

关于R data.table 按组计算多列中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321148/

相关文章:

mysql - 难以获得简单查询的计数

php - 如何根据mysql中的计数获得排名

删除每一列,但其中一些列在 data.table 中

python - 如何在结构主题建模 R 包中绘制文档主题分布?

R ggplot 热图使用 geom_tile() : how to sort by year and show all years in y-axis?

r - R中 "|"的含义是什么

mysql - SQL COUNT 零问题

r - 使用data.table在“分组依据”操作中设置列名称

r - 连接两个数据表,仅使用第二个dt中的一列

r - 根据条件更改ggplot2中某些轴标签的格式