如何比较一组列与另一组列?

问题描述 投票:0回答:2

考虑我们有以下数据

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
r dataframe compare
2个回答
0
投票

首先,我们在每次迭代中迭代数据帧的行,并将数据帧迭代为每个“集合”的向量。然后使用

unlist
运算符查看第一个集合中的
%in%
元素是否出现在第二个集合中。最后将结果赋值给
any
flag
列。
df



0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.