r - 在每个 ID 中重复一个值
问题描述
我有一个长格式的 R 数据集。每个 ID 出现的次数不同(即一个 ID 可能是一行,另一个 ID 可能出现 79 行)。
例如
ID V1 V2
1 B 0
1 A 1
1 C 0
2 C 0
3 A 0
3 C 0
我想创建一个变量,如果给定 ID 的任何行具有Var2 == 1
1,则该 ID 的每一行都重复 1
例如
ID V1 V2 V3
1 B 0 1
1 A 1 1
1 C 0 1
2 C 0 0
3 A 0 0
3 C 0 0
解决方案
在base R
我们可以使用any
- 和ave
进行分组。
DF$V3 <- with(DF, ave(V2, ID, FUN = function(x) any(x == 1)))
DF
# ID V1 V2 V3
#1 1 B 0 1
#2 1 A 1 1
#3 1 C 0 1
#4 2 C 0 0
#5 3 A 0 0
#6 3 C 0 0
数据
DF <- structure(list(ID = c(1L, 1L, 1L, 2L, 3L, 3L), V1 = c("B", "A",
"C", "C", "A", "C"), V2 = c(0L, 1L, 0L, 0L, 0L, 0L)), .Names = c("ID",
"V1", "V2"), class = "data.frame", row.names = c(NA, -6L))
推荐阅读
- python - 一旦项目满足使用python生成器的条件,继续循环
- python - plt.ylim 没有给我想要的范围
- javascript - 我的注册表在 localhost 上运行良好,但现在它在 c-panel 服务器上它不起作用
- php - PHP循环增量在一个范围内
- python - 如何访问“marshmallow.fields.String”类
- python - 如何使用 Beautiful Soup 获取标签的内容?
- c - 除法问题:将 int 返回类型转换为 float,返回 0
- azure - Azure 应用服务 - 无法将 SSL 证书绑定到自定义域
- python - 如何通过一对多关系查询 django 父子关系?
- java - 如何通过Java中的Rest Api从另一个项目中调用一个类的方法