首页 > 解决方案 > 如何使用 r 中的 if 条件生成 var 以捕获计数总数

问题描述

我有一个数据集如下所示:

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 以complete=="Yes"按 ID 捕获总数,最终数据应如下所示。我应该怎么做才能达到这样的结果?

我试过了

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

对不起,混乱。我是初学者,我的代码错误可能看起来很傻。

在此处输入图像描述

标签: rcountdata.tablesummarize

解决方案


由于您正在使用data.table,您可以使用以下方法轻松地按组计算完整案例(“是”条目的数量):

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

推荐阅读