繁体   English   中英

R中的semi_join但拉回重复项

[英]semi_join in R but pull back duplicates

我在dplyr的semi_join中遇到问题。 理想情况下,我想对dfB进行dfA半加入。 dfA有重复值,dfB也有重复值。 我想从dfA中撤回所有与dfB匹配甚至在dfA中重复的值。

dfA              dfB               >>     dfC
x    y    z      x    g                   x    y    z   
1    r    5      1    lkm                 1    r    5
1    b    4      1    pok                 1    b    4
2    4    e      2    jij                 2    4    e
3    5    r      2    pop                 3    5    r
3    9    g      3    hhg                 3    9    g
4    3    0      5    trt

我想得到的是上面的dfC输出。 因为x至少有1个匹配项,所以它会拉回dfA中的所有x

semi_join(dfA, dfB, by = "x")
dfC
x    y    z  
1    r    5
2    4    e
3    5    r


inner_join(dfA, dfB, by = "x")
x    y    z    g  
1    r    5    lkm
1    r    5    pok
1    b    4    lkm
1    b    4    pok
2    4    e    jij
2    4    e    pop
3    5    r    hhg
3    9    g    hhg

两者都不给我正确的结果。 任何帮助将是巨大的! 提前致谢

不确定为什么需要join :只需使用%in%

library(data.table)
setDT(dfA)[x %in% dfB$x,]

# simple base R approach :
dfA[dfA$x %in% dfB$x,]

如果您正在使用dplyr并继续将其向下传递

library(dplyr)
dfA %>% filter(x %in% dfB$x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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