SQLDF如何添加新的审查员?

SQLDF如何添加新的审查员?,sql,r,dataframe,sqldf,Sql,R,Dataframe,Sqldf,看,我有这样一个data.frame: str(veh) $VEHAGE int 3 6 35 35 5 3 7 4 5 1 ... $VEHTYPE int 2 1 3 1 2 3 1 4 2 3 ... 然后我就跑 a<-sqldf("SELECT VEHAGE, COUNT(VEHAGE) as count1 FROM veh WHERE VEHTYPE==1

看,我有这样一个data.frame:

str(veh)
$VEHAGE  int  3 6 35 35 5 3 7 4 5 1 ...
$VEHTYPE int  2 1 3 1 2 3 1 4 2 3 ...
然后我就跑

a<-sqldf("SELECT VEHAGE, COUNT(VEHAGE) as count1
                             FROM veh 
                             WHERE VEHTYPE==1
                             GROUP BY VEHAGE")


a<-sqldf("SELECT VEHAGE, COUNT(VEHAGE) as count234
                             FROM veh 
                             WHERE VEHTYPE==2|3|4
                             GROUP BY VEHAGE")
在这件事上我输了。但是我想要一个这样的脑袋

head(a)
  VEHAGE count234
1     -9     92
2      1     79
3      2    164
4      3    212
5      4    260
6      5    199
  VEHAGE count1   count234
1     -9     92    510
2      1     79    844
3      2    164    123
4      3    212    123
5      4    260    100
6      5    199    100

有什么想法吗?提前谢谢

我想你在找这个:

# first query
a <- sqldf("SELECT VEHAGE, COUNT(VEHAGE) as count1
                             FROM veh 
                             WHERE VEHTYPE==1
                             GROUP BY VEHAGE")

# second query
b <- sqldf("SELECT VEHAGE, COUNT(VEHAGE) as count234
                             FROM veh 
                             WHERE VEHTYPE IN (2, 3, 4)
                             GROUP BY VEHAGE")

# combine
a <- sqldf("SELECT * 
            FROM a JOIN b
            USING (VEHAGE)")
#第一次查询
a尝试以下方法:

a<-sqldf(
 "SELECT VEHAGE, 
    SUM(if(VEHTYPE==1, 1, 0)) as count1,
    SUM(if(VEHTYPE==2|3|4, 1, 0)) as count234
  FROM veh 
  GROUP BY VEHAGE")

我认为你必须
合并
,以防两组的行数不同(例如,某些VEHTYPE==1可能是该组独有的年龄)。@BrodieG感谢你指出这一点。我改变了方法,谢谢你们。它起作用了!是的,我应该尝试合并,因为一些组没有年龄-9,合并函数工作得很完美。sqldf使用的SQL语法取决于您使用的后端。默认情况下,它使用SQLite,但也可以使用H2、MySQL和PostgreSQL。当您第二次调用
sqldf
时,您将覆盖
a
。这就是为什么你输了
count1