我有类似的数据
x1 <- data.frame(state = c("FL","FL","TX","TX"), county = c("Duval","Columbia","Dallam","Dimmit"))
x2 <- data.frame(state = c("FL","FL","FL","TX","TX","TX"), county = c("Duval","Columbia","Pinellas","Dallam","Dimmit","Duval"), UR = c(4,5,7,4,6,3))
x3 <- subset(x2, county %in% x1$county & state %in% x1$state)
我想要的结果是 x1 中的 4 个县与 x2 中指定的 UR 相匹配。我的方法并没有消除在不同州出现的同名县。那么是否有一个选项可以让我仅在州+县组合匹配时进行过滤?
最佳答案
您正在寻找的是左连接:
> library(dplyr)
> left_join(x1, x2, by = c('state', 'county'))
state county UR
1 FL Duval 4
2 FL Columbia 5
3 TX Dallam 4
4 TX Dimmit 6
或者使用来自基础 R 的 merge
:
> merge(x1, x2, all.x = T)
state county UR
1 FL Columbia 5
2 FL Duval 4
3 TX Dallam 4
4 TX Dimmit 6
关于r - 如果两列组合与其他两列完全匹配,则对数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52116558/