3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
我認(rèn)為您在這里錯(cuò)了。無(wú)需使用plyr或<-使用data.table。
v> = 1.9.6的最新版本data.table具有一個(gè)新功能uniqueN()。
library(data.table) ## >= v1.9.6
setDT(d)[, .(count = uniqueN(color)), by = ID]
# ID count
# 1: A 3
# 2: B 2
如果要使用計(jì)數(shù)創(chuàng)建新列,請(qǐng)使用:=運(yùn)算符
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))

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
我只是說(shuō)所有提供的答案都使用基本R length(unique(x))
組合,現(xiàn)在可以通過使用data.table
和dplyr
特殊/高效(用C / C ++代碼編寫)函數(shù)避免使用。盡管OP也可能也需要:=
操作員,但我相信這不是主要問題。

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
這就是我說(shuō)(最新)data.table
解決方案的原因。它不包含新data.table::uniqueN()
功能。data.table
那里的解決方案基本上是一個(gè)基本解決方案
- 3 回答
- 0 關(guān)注
- 654 瀏覽
添加回答
舉報(bào)