R数据帧的SQLDF PIVOT

时间:2019-03-08 03:47:40

标签: r

我有一个名为data6的data.frame,我想在其上执行数据透视。 enter image description here 我已经尝试了sqldf,但是在彻底检查后仍然找不到为什么出现此错误

“ result_create(conn @ ptr,语句)中的错误:靠近“(”:语法错误”

sql语句:“选择*来自(选择*来自data6)PIVOT(sum([Qty])FOR([con2],[con3],[con4],[Con15],[[ Con2],[Con3],[Con4])”

使用重播/广播功能可以完成,但是作为新用户,我不知道该怎么做。甚至我也不知道重播和dcast有什么区别。

我知道这是很多问题,但是如果有人帮助我

1 个答案:

答案 0 :(得分:1)

默认情况下,$("[style]", "#idofstartdiv") 软件包使用SQLite作为基础数据库,因此您使用的sqldf语法将不起作用。尽管您可以将基础数据库更改为SQL Server,但也可以只使用ANSI标准数据透视查询:

PIVOT

我不确定sql <- "SELECT \"Style Name\", SUM(CASE WHEN GRNUOM = 'con2' THEN Qty ELSE 0 END) AS con2, SUM(CASE WHEN GRNUOM = 'con3' THEN Qty ELSE 0 END) AS con3, SUM(CASE WHEN GRNUOM = 'con4' THEN Qty ELSE 0 END) AS con4, SUM(CASE WHEN GRNUOM = 'Con15' THEN Qty ELSE 0 END) AS Con15, SUM(CASE WHEN GRNUOM = 'Con2' THEN Qty ELSE 0 END) AS Con2, SUM(CASE WHEN GRNUOM = 'Con3' THEN Qty ELSE 0 END) AS Con3, SUM(CASE WHEN GRNUOM = 'Con4' THEN Qty ELSE 0 END) AS Con4 FROM data6 GROUP BY \"Style Name\"" result <- sqldf(sql) con2是否实际上会被识别为单独的列名。您可能必须将所有列名都放在双引号中,以使上述查询按您期望的方式工作。