R语言如何提取数据框50-200行计算指定年龄分组的人数占比
R语言实现指定行区间年龄分组占比统计方案
方法1:基础R实现(无需额外安装依赖包)
- 第一步:提取第50至200行的样本子集
代码:df_sample <- df[50:200, ] - 第二步:对Age列按指定区间分箱
# 定义分组断点和标签 age_breaks <- c(14, 20, 25, 30, 35) age_labels <- c("15-20", "21-25", "26-30", "31-35") # 生成分组字段 df_sample$age_group <- cut(df_sample$Age, breaks = age_breaks, labels = age_labels, include.lowest = TRUE) - 第三步:统计各组人数占比
代码:age_ratio <- round(prop.table(table(df_sample$age_group)) * 100, 2)
执行后会直接输出四个年龄组的百分比占比,保留2位小数。
方法2:tidyverse生态dplyr包实现(代码更简洁易读)
如果你已经安装tidyverse系列包,可以用管道符逻辑实现:
library(dplyr) df %>% slice(50:200) %>% # 提取第50到200行数据 filter(!is.na(Age)) %>% # 可选:过滤Age列的缺失值,避免统计偏差 mutate( age_group = cut( Age, breaks = c(14, 20, 25, 30, 35), labels = c("15-20", "21-25", "26-30", "31-35"), include.lowest = TRUE ) ) %>% count(age_group, name = "人数") %>% mutate(占比 = round(人数 / sum(人数) * 100, 2))
注意事项:
- 超出15-35范围的年龄值会被标记为NA,统计时默认排除,如果你需要统计这部分“其他”群体,可调整breaks参数增加区间即可
- 如果Age列是字符格式,需先转为数值格式:
df$Age <- as.numeric(df$Age)
内容的提问来源于stack exchange,提问作者S_C
相关产品推荐
相关产品推荐

