我是R的新手,我主要通过访问这些Q& A网站来学习。我最初想发表对前一个问题的评论,这部分回答了我的问题,但由于我刚刚成为会员,因此无法得到我的声誉。
链接到问题: https://stackoverflow.com/a/16160671/4681908
我想要做的是创建一个新列,在我的数据集中为唯一ID计算varialbe的唯一值。而不是获得列表如下代码:
with(mydf, tapply(Spp, Cnty, FUN = function(x) length(unique(x))))
,我想将它编码为一个新变量。任何人都可以帮我这个吗?对于任何缺乏信息我感到抱歉,并提前感谢您
答案 0 :(得分:4)
从n_distinct
dplyr
library(dplyr)
mydf %>% group_by(Cnty) %>% mutate(Count=n_distinct(Spp))
uniqueN
来自data.table
library(data.table)
setDT(mydf)[,Count:=uniqueN(Spp) ,by = Cnty][]
或使用ave
代替tapply
。作为' Spp'是一个因素'列,您可以使用' as.numeric'
mydf$Count <- with(mydf, ave(as.numeric(Spp), Cnty,
FUN=function(x) length(unique(x))))