R data.table подсчитывает уникальные значения в нескольких столбцах по группам - PullRequest
0 голосов
/ 14 мая 2018
> 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")]

1 Ответ

0 голосов
/ 14 мая 2018

Удалите кавычки вокруг имен столбцов, чтобы столбцы могли быть оценены как векторы перед передачей в функцию uniqueN, в противном случае они будут оцениваться как буквенные векторы символов:

have[, .(UnN = uniqueN(c(colA, colB))), ID]
#   ID UnN
#1:  1   3
#2:  2   3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...