首页 > 解决方案 > R中的语法问题

问题描述

我的数据集说 data123 有列 Order.No,date,transactions 等。我正在使用 sqldf 进行数据透视,下面是代码

Pivot123=sqldf("Select Order.No,Date,Month,Year,Category from data123")

运行此功能时,我收到以下错误

Error: near "Order": syntax error

是什么原因?我重新检查了,但列名是正确的提前谢谢

标签: rsyntax-error

解决方案


公约在Table.ColumnName这里咬你。由于我推断这Order.No是一个列名,因此将您的问题更改为以下之一:

sqldf("Select [Order.No],Date,Month,Year,Category from data123")
sqldf('Select "Order.No",Date,Month,Year,Category from data123') # note the shift from ' to "

前提是您要告诉 SQL 引擎这Order.No是一个标识符(完整名称),而不是由正常的点符号格式分隔。引用标识符有两种常见的方式:[Order.No]"Order.No". 单引号方法只识别字符串文字,所以'Order.No'不起作用(试试看)。

一个很好的例子使用了一种常见的技术:分配一个(通常较短的)别名,当表名很长时特别有用:

#         the alias is used here
#             vvv.            vvv.      vvv.       vvv.      vvv.
sqldf("Select tb1.[Order.No], tb1.Date, tb1.Month, tb1.Year, tb1.Category
       from data123 tb1")
#                   ^^^ this is the alias

这并不总是必要的,但有必要的时候当您从多个表中查询并且它们共享列名时。

最后,您可以选择“引用”所有列名,这没有害处:

sqldf("Select [Order.No], [Date], [Month], [Year], [Category] from data123")

推荐阅读