考虑我们有以下数据
df <- data.frame(jan=c(10,7,1),
feb=c(20,9,2),
mar=c(30,6,3),
apr=c(5,5,4),
may=c(0,9,5),
jun=c(10,8,6)
)
jan feb mar apr may jun
1 10 20 30 5 0 10
2 7 9 6 5 9 8
3 1 2 3 4 5 6
我期望导出一个新的标志变量,该变量是通过将 1 组列(一月、二月、三月)与(四月、五月、六月)进行比较而导出的,如果一组的值与另一组的值匹配,则 flag='Y' ,否则为“N”。
这里 jan 值与第一行的 jun 匹配,因此标志为 Y。
jan feb mar apr may jun flag
1 10 20 30 5 0 10 Y
2 7 9 6 5 9 8 Y
3 1 2 3 4 5 6 N
首先,我们在每次迭代中迭代数据帧的行,并将数据帧迭代为每个“集合”的向量。然后使用
unlist
运算符查看第一个集合中的 %in%
元素是否出现在第二个集合中。最后将结果赋值给any
的flag
列。df
df$flag <- sapply(1:nrow(df), \(x) any(unlist(df[x, 1:3]) %in% unlist(df[x, 4:6])))
df
#> jan feb mar apr may jun flag
#> 1 10 20 30 5 0 10 TRUE
#> 2 7 9 6 5 9 8 TRUE
#> 3 1 2 3 4 5 6 FALSE