[英]String Match columns in two dataframes, replace another column value only if is.na
[英]Match columns from two dataframes and filter on the value of another columns
我有两个具有相同列数但不同行数的数据框:
colA colB colC colD
xxx 303 200 A
yyy 111 20 B
zzz 24 188 C
我需要匹配colA
从df1
到colA
从df2
并且只选择行,其中df1$colB - df2$colC <= 2000
我试图做for循环,但是没有用:
for (i in nrow(df1)) {
for (j in nrow(df2)) {
df3 <- subset(merge(df2[j,], df1[i,], by="row.names", all=T), df2$colA[j] == df1$colA[i] && (df1$colB[i] - df2$colC[j]) <= abs(2000))
}
}
我究竟做错了什么? 它没有给我任何错误,但是新数据框为空。
如果dplyr
是一个选项,请尝试以下操作:
df1 %>%
inner_join(df2, by = "colA") %>%
filter(abs(colB.x - colC.y) <= 2000)
这将为您提供带有colA, colB.x, colC.x, colD.x, colB.y, colC.y, colD.y
列的框架colA, colB.x, colC.x, colD.x, colB.y, colC.y, colD.y
其中.x来自df1,.y来自df2。 还要注意b - a <= abs(2000)
可能意味着abs(b - a) <= 2000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.