计算 R 中虚拟对象(分组依据)的首次出现次数,然后求和

Count first occurence of a dummy (grouped by) in R and then sum

structure(list(id = c(1L, 1L, 2L, 3L, 3L, 3L, 4L), hire_year = c(2017L, 
2017L, 2017L, 2017L, 2016L, 2014L, 2016L), dummy = c(0L, 0L, 
1L, 0L, 0L, 0L, 1L)), class = "data.frame", row.names = c(NA, 
-7L))

  id hire_year dummy
1  1      2017     0
2  1      2017     0
3  2      2017     1
4  3      2017     0
5  3      2016     0
6  3      2014     0
7  4      2016     1

我想计算虚拟值为 0 的行数。但是,我希望每个 ID 只计数一次,即使对于同一个 ID,我可能有不止一行虚拟等于 0。 在这里我希望输出为 [2].

您可以使用 distinct 只保留唯一的行,然后计算 0 的数量。

df %>%
  distinct(id, .keep_all = TRUE) %>%
  summarise(dummy = sum(dummy == 0))

#  dummy
#1     2

length(unique(df$id[df$dummy==0]))

使用过滤器仅查找带零的响应,使用 distinct 仅对每个 id 计数一次并使用 summarize 对值进行计数:

library(tidyverse)
df = bind_cols(id = c(1,1,2,3,3,3,4), hire_year = c(rep(2017, 4), 2016, 2014, 2016), dummy = c(0,0,1,0,0,0,1))
df %>% filter(dummy == 0) %>% distinct(id) %>% summarise(count = n())