繁体   English   中英

SQLDF在R中的左连接

[英]SQLDF Left Join in R

我的目标是采用'matr',按列c1对其进行排序,并保持唯一(c1),其中c2 = 1.例如,从此代码中...

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。 我只能到达(通过其他联接)

c1 c2
a  1
b  1

你想on ,而不是where在过去的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM