基于条件验证R中两个数据帧之间列中的值
我有两个数据帧。我必须匹配nndf和tndf之间的前两列,如果有匹配,我必须检查第三列中的值是否相同,并更新第三个数据帧。问题是nndf比tndf长 我尝试使用forloop+if条件。但是,它会在每一行中重复多次并填充结果 我们可以做一个内部连接,然后比较两列中的值基于条件验证R中两个数据帧之间列中的值,r,R,我有两个数据帧。我必须匹配nndf和tndf之间的前两列,如果有匹配,我必须检查第三列中的值是否相同,并更新第三个数据帧。问题是nndf比tndf长 我尝试使用forloop+if条件。但是,它会在每一行中重复多次并填充结果 我们可以做一个内部连接,然后比较两列中的值 library(dplyr) inner_join(nndf, tndf, by = c("var1", "var2")) %>% mutate(var3 = var3.x == var3.y) %>%
library(dplyr)
inner_join(nndf, tndf, by = c("var1", "var2")) %>%
mutate(var3 = var3.x == var3.y) %>%
dplyr::select(var1, var2, var3)
# var1 var2 var3
#1 ABC xyz TRUE
#2 ABC abc TRUE
#3 DEF def FALSE
或者类似地在R基中
df1 <- merge(nndf, tndf, by = c("var1", "var2"))
df1$var3 <- df1$var3.x == df1$var3.y
我们可以做一个内部连接,然后比较两列中的值
library(dplyr)
inner_join(nndf, tndf, by = c("var1", "var2")) %>%
mutate(var3 = var3.x == var3.y) %>%
dplyr::select(var1, var2, var3)
# var1 var2 var3
#1 ABC xyz TRUE
#2 ABC abc TRUE
#3 DEF def FALSE
或者类似地在R基中
df1 <- merge(nndf, tndf, by = c("var1", "var2"))
df1$var3 <- df1$var3.x == df1$var3.y
我们可以在基R中使用%in%来创建逻辑向量
tndf$var3 <- do.call(paste, tndf) %in% do.call(paste, nndf)
tndf
# var1 var2 var3
#1 ABC xyz TRUE
#2 ABC abc TRUE
#3 DEF def FALSE
我们可以在基R中使用%in%来创建逻辑向量
tndf$var3 <- do.call(paste, tndf) %in% do.call(paste, nndf)
tndf
# var1 var2 var3
#1 ABC xyz TRUE
#2 ABC abc TRUE
#3 DEF def FALSE
尝试tndf$var3尝试tndf$var3@akrun…谢谢…我使用了第一个选项,因为我有很多向量超出了第三列…已经为您的方法创建了一个改编。@akrun…谢谢…我使用了第一个选项,因为我有很多向量超出了第三列…已经为您的方法创建了一个改编。