首页 > 解决方案 > 在每个 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 == 11,则该 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

标签: r

解决方案


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))

推荐阅读