如何使用 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)]
我的数据集如下所示:
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)]