R按分组统计符合条件的观测值 各地点员工数及超40小时工作人数统计
R分组统计符合条件观测值的实现方案
以下提供dplyr和base R两种实现方式:
前置:构造示例数据
你可以直接运行以下代码生成你给出的测试数据,方便验证效果:
df <- data.frame( name = c("Bob", "Nick", "Sally", "Patricia", "Tim", "Liz", "Brad", "Sam"), hours_worked = c(55, 25, 30, 50, 35, 42, 60, 48), location = c("IL", "IL", "IL", "WI", "WI", "OH", "OH", "OH") )
方法1:dplyr实现(代码更简洁易读)
library(dplyr) result <- df %>% # 按工作地点分组 group_by(location) %>% # 分组统计所需指标 summarise( headcount = n(), # 统计分组内总人数 over_40 = sum(hours_worked > 40) # 统计满足时长条件的人数,逻辑值求和即计数 )
方法2:base R实现(无需加载额外包)
# 统计各地点总员工数 headcount_df <- aggregate(name ~ location, df, FUN = length) colnames(headcount_df) <- c("location", "headcount") # 统计各地点工作时长超40小时的员工数 over40_df <- aggregate(hours_worked ~ location, df, FUN = function(x) sum(x > 40)) colnames(over40_df) <- c("location", "over_40") # 合并两个统计结果得到最终表 result <- merge(headcount_df, over40_df, by = "location")
运行上述任意一种方法得到的result就是你期望的输出格式。
内容的提问来源于stack exchange,提问作者bodega18
相关产品推荐
相关产品推荐

