我有 2 个数据框,其中包含帐号和金额以及其他一些不相关的列。如果匹配与否,我想将输出与 Y 或 N 进行比较。
我需要将数据帧 A 中第 1 行中的帐号与数据帧 B 中第 1 行中的帐号进行比较,如果它们匹配,则在列中输入 Y,如果不匹配则在 N 中输入。我设法让代码检查整个数据帧中是否有匹配项,但我需要单独检查每一行。
例如 df1
|account.num|x1|x2|x3|
|100|a|b|c|
|101|a|b|c|
|102|a|b|c|
|103|a|b|c|
df2
|account.num|x1|x2|x3|
|100|a|b|c|
|102|a|b|c|
|101|a|b|c|
|103|a|b|c|
输出
|account.num|x1|x2|x3|匹配|
|100|a|b|c|Y|
|101|a|b|c|N|
|102|a|b|c|N|
|103|a|b|c|Y|
因此,第 1 行匹配,因为它们具有相同的帐号,但第 2 行不匹配,因为它们不同。但是,数据框中的其他数据不仅仅与该列有关。我可以在不合并数据框的情况下执行此操作吗?(我确实有桌子,但它们不起作用。我不知道为什么。很抱歉,如果这很难理解)。
您可以使用==
来比较 account.num 是否相等,并使用此布尔向量进行子集c("N", "Y")
df1$match <- c("N", "Y")[1 + (df1[[1]] == df2[[1]])]
df1
# account.num x1 x2 x3 match
#1 100 a b c Y
#2 101 a b c N
#3 102 a b c N
#4 103 a b c Y
数据:
df1 <- data.frame(account.num=100:103, x1="a", x2="b", x3="c")
df2 <- data.frame(account.num=c(100,102,101,103), x1="a", x2="b", x3="c")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句