如何在 R 中创建一个计算唯一值的新列

How to create a new column in R that counts unique values

我是 R 的新手,我主要通过访问这些问答网站来学习。我最初想 post 对之前的问题发表评论,这部分回答了我的问题,但由于我刚刚成为会员,我的声誉无法做到。

Link 提问:

我想要做的是创建一个新列来计算我的数据集中的变量的唯一值以获取唯一 ID。而不是像以下代码那样获取列表:

with(mydf, tapply(Spp, Cnty, FUN = function(x) length(unique(x))))

,我想把它编码成一个新的变量。谁能帮我解决这个问题?很抱歉缺少任何信息,在此先感谢您

dplyr

开始尝试 n_distinct
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' 是 'factor' 列,您可以使用 'as.numeric'

mydf$Count <-  with(mydf, ave(as.numeric(Spp), Cnty,
                      FUN=function(x) length(unique(x))))