SQLDF如何添加新的审查员?
看,我有这样一个data.frame: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
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
。