如何在R语言中统计数据框指定列的唯一观测值数量
嗨,针对你这个统计数据框指定列唯一观测值数量的需求,在R里有好几种实用的方法,我结合你给出的df数据框来演示几种常用的:
方法1:Base R 原生实现(无需额外包)
这是最直接的原生解法,先用unique()提取id列的所有唯一值,再用length()统计它们的个数:
# 你的数据框 df <- data.frame(id = c(1,1,1,2,2,2,2,3,3,5,5,5,9,9)) # 统计唯一值数量 length(unique(df$id)) # 运行后输出:5
另外还有一种用table()的方式,table()会生成列的频率统计表,统计表的长度就是唯一值的数量,结果是一样的:
length(table(df$id)) # 输出同样是:5
方法2:使用dplyr包(tidyverse生态)
如果你平时习惯用tidyverse系列的工具,dplyr里的n_distinct()函数可以一步到位,代码更简洁易读:
# 如果还没安装dplyr,先执行安装(仅需一次) # install.packages("dplyr") library(dplyr) # 直接统计id列的唯一值数量 n_distinct(df$id) # 输出:5 # 要是想把结果整合到数据框操作链里(比如用管道符),可以这么写: df %>% summarise(unique_id_count = n_distinct(id)) # 输出会是一个包含结果的小数据框: # unique_id_count # 1 5
这几种方法都能精准得到你要的5这个结果,你可以根据自己的代码习惯选择合适的方式~
内容的提问来源于stack exchange,提问作者Bae
相关产品推荐
相关产品推荐

