如何在 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
您好,感谢您阅读我的文章。我有一个包含 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