SQLDF在R中左连接

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

我的目标是获取“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 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>