semi_join 在 R 中但拉回重复项
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)
我在使用 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
中的所有 xsemi_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)