如何在 r 中的列中获取匹配项(即使它们不在同一行号中)?

How can I get matches in columns (even if they are not in the same row number) in r?

您好,感谢您阅读我的文章。我有一个包含 3 个向量的数据集,我想比较前两个向量。这个想法是这样的:如果我在第一列中至少有一个值与第二列中的值匹配,那么我想创建一个新变量,它采用第三列中的值(与第二列中的值匹配柱子)。我不太确定该怎么做,我尝试了 any() 函数,但它无法正常工作

例如我有如下数据框:

x <- 
    data.frame(
      val1 = c(10,10,10,1,12,15),
      val2 = c(5,4,3,2,1,6),
      val3 = c(100,200,200,100,400,411)
    ) 

我希望得到以下输出(因为数字 1 存在于前 2 列中):

data.frame(
          val1 = c(10,10,10,1,12,15),
          val2 = c(5,4,3,2,1,6),
          val3 = c(100,200,200,100,400,411),
          val4 = c(NA,NA,NA,NA,400,NA)
        ) 

感谢帮助

您可以使用 %in% 来识别 val2 匹配 val1 的位置。

library(dplyr)

x %>%
  mutate(val4 = ifelse(val2 %in% val1, val3, NA))

  val1 val2 val3 val4
1   10    5  100   NA
2   10    4  200   NA
3   10    3  200   NA
4    1    2  100   NA
5   12    1  400  400
6   15    6  411   NA