R data.table按组对多个列中的唯一值进行计数

LeG*_*sII 2 r unique count data.table

> 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
Run Code Online (Sandbox Code Playgroud)

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

不知道为什么以下内容不起作用:

have[, UnN = uniqueN(c("colA","colB")), by = C("ID")]
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

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

have[, .(UnN = uniqueN(c(colA, colB))), ID]
#   ID UnN
#1:  1   3
#2:  2   3
Run Code Online (Sandbox Code Playgroud)