4

私の目標は、「matr」を取得し、列 c1 で並べ替え、c2 = 1 の場合に unique(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 が失われます。私は(他の結合を介して)到達することしかできません

c1 c2
a  1
b  1
4

1 に答える 1

5

最後のSQLステートメントではonなく、必要です。whereでは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>
于 2013-05-30T22:45:22.203 に答える