如何使用 r 中的 if 条件生成一个 var 来捕获计数总数

How to generate a var to capture count total number with if condition in r

我的数据集如下所示:

library(data.table)
dt <- data.table(id = c("A", "A", "A", "B", "B", "B", "C", "C", "C"), Complete = c("Yes","No","Yes","Yes","No","Yes","Yes","Yes","Yes"))

> dt
   id Complete
1:  A      Yes
2:  A       No
3:  A      Yes
4:  B      Yes
5:  B       No
6:  B      Yes
7:  C      Yes
8:  C      Yes
9:  C      Yes

我想构建 var N_complete 以按 ID 捕获 complete=="Yes" 的总计数,最终数据应如下所示。为了达到这样的结果我应该怎么做?

我试过了

dt$N_complete <- unlist(lapply(split(dt,dt$ID), function(x) rep(summarize(n(x)[x$Complete=="Yes"],na.rm=T),nrow(x))))

抱歉弄得一团糟。我是初学者,我的代码错误可能看起来很愚蠢。

由于您使用的是 data.table,因此您可以使用以下方法按组轻松计算完整个案('Yes' 个条目的数量):

dt[, N_complete := sum(Complete == "Yes", na.rm = TRUE), by = .(id)]