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