Ответ 1
Думаю, у вас здесь все не так. Нет необходимости ни в plyr
, либо <-
при использовании data.table
.
Последние версии data.table, v >= 1.9.6, имеют для этого новую функцию uniqueN()
.
library(data.table) ## >= v1.9.6
setDT(d)[, .(count = uniqueN(color)), by = ID]
# ID count
# 1: A 3
# 2: B 2
Если вы хотите создать новый столбец со счетами, используйте оператор :=
setDT(d)[, count := uniqueN(color), by = ID]
Или с помощью dplyr
используйте функцию n_distinct
library(dplyr)
d %>%
group_by(ID) %>%
summarise(count = n_distinct(color))
# Source: local data table [2 x 2]
#
# ID count
# 1 A 3
# 2 B 2
Или (если вы хотите новый столбец) используйте mutate
вместо summary
d %>%
group_by(ID) %>%
mutate(count = n_distinct(color))