如何在R中高效按条件统计列值并生成汇总表?
高效统计分组观测值的方法
可以用两种主流方式实现一次性生成目标汇总表,避免多次调用count:
方法一:使用tidyverse工具链(dplyr)
利用case_when先给数据列按条件分组,再一次性统计每组的数量:
library(dplyr) df <- data.frame(X = sample(1:100)) df %>% mutate(group = case_when( X < 25 ~ "<25", X >=25 & X <=50 ~ "25-50", X >50 ~ ">50" )) %>% count(group, name = "count")
这段代码会直接生成包含分组标签和对应计数的表格,和你想要的格式一致。
方法二:使用base R的cut函数
如果不想加载额外包,用base R的cut函数可以快速分箱并统计:
df <- data.frame(X = sample(1:100)) # 定义分箱区间和标签 bins <- c(-Inf, 24, 50, Inf) labels <- c("<25", "25-50", ">50") # 生成分组并统计 result <- table(cut(df$X, breaks = bins, labels = labels)) # 转成数据框格式(可选) as.data.frame(result)
cut函数会自动把数值按指定区间分组,table直接统计每组数量,结果和需求匹配。
这两种方法都只需要一次操作就能完成统计,比多次调用count高效得多,而且结果格式更规整。
内容的提问来源于stack exchange,提问作者Ramon_88
相关产品推荐
相关产品推荐

