繁体   English   中英

匹配来自两个数据框的列,并根据其他列的值进行过滤

[英]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

我需要匹配colAdf1colAdf2并且只选择行,其中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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM