如何使用dplyr实现病假天数超2天人群的年龄分组统计?
没问题!用dplyr来完成这个统计不仅代码更整洁,还能无缝衔接后续的可视化操作,我给你两种实用的实现方式:
方式1:直接统计两组人数
这种方法和你原来的操作逻辑完全对应,一步算出你需要的两个数值:
library(dplyr) # 执行统计 summary_stats <- data %>% filter(Sick.days > 2) %>% # 筛选病假天数超过2天的记录 summarize( 35岁以上人数 = sum(Age > 35), 35岁及以下人数 = sum(Age <= 35) ) # 查看结果 summary_stats
运行后会得到一个包含两列的dataframe,直接呈现你之前得到的115和36这两个统计值。
方式2:分组统计(更适合绘图)
如果接下来要绘制柱状图,这种分组方式会更方便,直接生成适合可视化的结构化数据:
library(dplyr) # 生成分组统计数据 grouped_data <- data %>% filter(Sick.days > 2) %>% # 创建年龄分组变量 mutate(age_group = case_when( Age > 35 ~ "35岁以上", Age <= 35 ~ "35岁及以下" )) %>% # 统计每个分组的人数 count(age_group) # 查看结果 grouped_data
输出的结果是一个两列的表格,一列是分组名称,一列是对应人数。要是你用ggplot2画柱状图,直接用这个数据就行,示例代码如下:
library(ggplot2) grouped_data %>% ggplot(aes(x = age_group, y = n)) + geom_col(fill = "#4A90E2") + labs(title = "不同年龄组病假超2天的人数对比", x = "年龄分组", y = "人数") + theme_minimal()
这样不管是统计还是后续可视化,用dplyr都能轻松搞定~
内容的提问来源于stack exchange,提问作者Ri_Ri
相关产品推荐
相关产品推荐

