SQLDF在R中左连接
我的目标是获取“matr”,按c1列对其进行排序,并在c2=1时保持唯一性(c1)。例如,从这个代码SQLDF在R中左连接,r,left-join,sqldf,R,Left Join,Sqldf,我的目标是获取“matr”,按c1列对其进行排序,并在c2=1时保持唯一性(c1)。例如,从这个代码 c1 = c("a",'a','a','b','b','b','b','c','c') c2 = c(1,1,0,1,1,0,1,0,0) matr = as.data.frame(cbind(c1,c2)) one = sqldf('select distinct(c1),c2 from matr where c2 = 1') vs = sqldf('select distin
c1 = c("a",'a','a','b','b','b','b','c','c')
c2 = c(1,1,0,1,1,0,1,0,0)
matr = as.data.frame(cbind(c1,c2))
one = sqldf('select distinct(c1),c2 from matr where c2 = 1')
vs = sqldf('select distinct(c1),c0,c2 from matr group by c1')
sqldf('select matr.*,one.* from matr
left outer join one
where one.c1 = matr.c1')
达成:
c1 c2
a 1
b 1
c 0
由于某种原因,我在左联接中丢失了c行。我只能(通过其他连接)到达
您希望
在
上,而不是在最后一条sql语句中的位置。使用where
执行连接,然后应用where
子句,而使用on
执行与on
条件相关的连接
> sqldf('select matr.*, one.* from matr left outer join one on one.c1 = matr.c1')
c1 c2 c1 c2
1 a 1 a 1
2 a 1 a 1
3 a 0 a 1
4 b 1 b 1
5 b 1 b 1
6 b 0 b 1
7 b 1 b 1
8 c 0 <NA> <NA>
9 c 0 <NA> <NA>
sqldf('select matr.*,one.*从matr left-outer-join-one-on-one.c1=matr.c1')
c1 c2 c1 c2
1 a 1 a 1
2 a 1 a 1
3 a 0 a 1
4b1b1
5b1b1
6B0B1
7b1b1
8c0
9c0
谢谢您的回答!它帮助我解决了一个我一直在努力解决的问题。
> sqldf('select matr.*, one.* from matr left outer join one on one.c1 = matr.c1')
c1 c2 c1 c2
1 a 1 a 1
2 a 1 a 1
3 a 0 a 1
4 b 1 b 1
5 b 1 b 1
6 b 0 b 1
7 b 1 b 1
8 c 0 <NA> <NA>
9 c 0 <NA> <NA>