r - 如果一个变量在一组中相等,则计算组的 ID

标签 r

我在 R 中有一个数据框,如下所示:

  Group.ID status
1        1   open
2        1   open
3        2   open
4        2 closed
5        2 closed
6        3   open

我想在以下条件下计算 ID 的数量:对于相同的 ID 号,当所有状态都为“打开”时。例如,组 ID 1 有两个观察值,它们的状态都为“打开”,所以这是我的计数之一。组 ID 2 不是因为并非所有状态都对组 ID 2 开放。

我可以在条件下计算行或组 ID。但是我不知道如何应用“所有状态等于一组值”的逻辑。

数据。
df1 <-
structure(list(Group.ID = c(1, 1, 2, 2, 2, 3), status = structure(c(2L, 
2L, 2L, 1L, 1L, 2L), .Label = c("closed", "open"), class = "factor")), .Names = c("Group.ID", 
"status"), row.names = c(NA, -6L), class = "data.frame")

最佳答案

这里有两个解决方案,都使用 base R ,还有一个更复杂的 aggregate另一个是 tapply .如果你只想要 Group.ID 的总数符合您的要求,我建议您使用第二种解决方案。

agg <- aggregate(status ~ Group.ID, df1, function(x) as.integer(all(x == "open")))
sum(agg$status)
#[1] 2

sum(tapply(df1$status, df1$Group.ID, FUN = function(x) all(x == "open")))
#[1] 2

关于r - 如果一个变量在一组中相等,则计算组的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47577720/

相关文章:

r - 在 R 中绘制多项式回归曲线

sql - 当添加的列较少时,追加到现有的SQLite表,而无需将数据库读入R

json - 将 JSON 文件转换为 data.frame

r - 线性回归并将结果存储在数据框中

r - 提高大型矩阵中加权 Jaccard 计算的性能

r - 在条形图中添加每组的观察数(ggplot2)

r - 使用 lpsolve 在 R 中进行线性规划

r - 使用 ggplot 在一页上绘制多个图

r - 如何从已排序矩阵列的一部分中获取列名?

r - 使用lme4设置rhoend参数