连接数据帧时R中的Where子句

连接数据帧时R中的Where子句,r,join,R,Join,我不熟悉R编程。我的任务是使用where条件文件管理器加入数据帧。我在下面有2个数据帧,我想通过col1将df2$B_col2连接到df1,但前提是df1$A_col2=1 我使用了下面的代码,它给出了结果,但我知道代码是有效的。如果有任何方法在加入表格时删除记录,请让我知道 Df1 col1 A_col2 1 b 1 2 a 1 3 a 0 4 c

我不熟悉R编程。我的任务是使用where条件文件管理器加入数据帧。我在下面有2个数据帧,我想通过col1将df2$B_col2连接到df1,但前提是df1$A_col2=1

我使用了下面的代码,它给出了结果,但我知道代码是有效的。如果有任何方法在加入表格时删除记录,请让我知道


Df1      col1      A_col2
1          b          1
2          a          1
3          a          0
4          c          0
5          d          1

Df2      col1      B_col2
1          a          10                     
2          b          20
3          c          30
4          d          40
5          e          50

代码


如果您使用base R,您可以尝试如下所示的
merge
+
subset

> subset(merge(df1, df2, all.x = TRUE), A_col2 > 0)
  col1 A_col2 B_col2
1    a      1     10
3    b      1     20
5    d      1     40
匹配
+
子集

> subset(
+   transform(
+     df1,
+     B_col2 = df2$B_col2[match(col1, df2$col1)]
+   ),
+   A_col2 > 0
+ )
  col1 A_col2 B_col2
1    b      1     20
2    a      1     10
5    d      1     40

A
数据表
选项

> setDT(df2)[setDT(df1), on = .(col1)][A_col2 > 0]
   col1 B_col2 A_col2
1:    b     20      1
2:    a     10      1
3:    d     40      1

left_join(df1[df1$A_col2==1,],df2,by=“col1”)
?嗨,罗兰,是的,这正是我要找的。非常感谢!!
> subset(
+   transform(
+     df1,
+     B_col2 = df2$B_col2[match(col1, df2$col1)]
+   ),
+   A_col2 > 0
+ )
  col1 A_col2 B_col2
1    b      1     20
2    a      1     10
5    d      1     40
> setDT(df2)[setDT(df1), on = .(col1)][A_col2 > 0]
   col1 B_col2 A_col2
1:    b     20      1
2:    a     10      1
3:    d     40      1