按 R 组计算满足特定标准的观察结果

Count Observations Meeting Certain Criteria by Group R

我需要一些帮助来按组计算满足特定条件的观察结果。我首先希望将按位置分类的员工人数作为一列。然后我想检索工作超过 40 小时(按位置)的员工数量,并将其汇总到一列中。我假设有一种简单的方法可以使用 dplyr 或 base R 来完成,但我很难过。我的数据如下。

name       hours_worked  location
Bob        55            IL
Nick       25            IL 
Sally      30            IL
Patricia   50            WI
Tim        35            WI
Liz        42            OH
Brad       60            OH
Sam        48            OH

理想的输出应该是这样的:

location   headcount   over_40 
IL            3          1
WI            2          1
OH            3          3

我们可以按操作进行分组 - 按 'location' 分组以获得人数的行数 (n()) 和逻辑向量的 sum 以获得 'over_40'

library(dplyr)
df1 %>% 
   group_by(location) %>% 
   summarise(headcount = n(), over_40 = sum(hours_worked > 40))

-输出

# A tibble: 3 x 3
  location headcount over_40
  <chr>        <int>   <int>
1 IL               3       1
2 OH               3       3
3 WI               2       1

数据

df1 <- structure(list(name = c("Bob", "Nick", "Sally", "Patricia", "Tim", 
"Liz", "Brad", "Sam"), hours_worked = c(55L, 25L, 30L, 50L, 35L, 
42L, 60L, 48L), location = c("IL", "IL", "IL", "WI", "WI", "OH", 
"OH", "OH")), class = "data.frame", row.names = c(NA, -8L))