在 group_by 内添加一个因子水平的计数

Add count of one factor level within group_by

我正在进行一项调查数据分析,我对一个家庭进行了多次观察,并且我有家庭和个人层面的变量。我现在想将个人层面的特征转化为家庭层面的特征,例如一个家庭中有多少就业人员。

最小 Reprex:

library(tidyverse)

df <- tibble( "id" = c(1,1,2,2,3,3,3),
              "status"= as.factor(c("employed", "employed", "unemployed", "unemployed", "employed", "unemployed", "other")))

df %>% 
  group_by(id) %>% 
  add_count(status, name = "count_types")

上面的代码产生了我想要的一半。我想进一步创建一个变量来指示 status = employed 的人数,并将其分配给同一 ID 内的 all。我尝试了一个 case_when 链,但它为第 2 组生成了 NA 而不是 0,其中没有“受雇”个人,并且只有在受雇存在并且每个组中的第一行时才有效。

感谢您的建议,最好是 tidyverse 风格。

您只需要比较 status 是否等于“employed”并对逻辑向量求和:

df %>% 
  group_by(id) %>% 
  add_count(status, name = "count_types") %>%
  mutate(n_employed = sum(status == "employed"))