r - R中的语法问题
问题描述
我的数据集说 data123 有列 Order.No,date,transactions 等。我正在使用 sqldf 进行数据透视,下面是代码
Pivot123=sqldf("Select Order.No,Date,Month,Year,Category from data123")
运行此功能时,我收到以下错误
Error: near "Order": syntax 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")
推荐阅读
- angular - 是否可以使用 ngIf 匹配两个数组并正确显示不匹配的参数?
- mysql - Mysql为什么加锁后count(*)性能非常快
- python - 如何在 Django 测试中模拟序列化程序?
- python - ttk.Notebook 分离标签
- linux - 在 bash 脚本中将 *.txt.csv 文件重命名为 .csv
- r - 我可以在 UI 的一部分中使用单选按钮选择来创建标题吗?
- javascript - React Hook Form 未正确发布请求
- cakephp-3.0 - cakephp 3 在指定路由中默认查看 Json
- sql - Entity Framework Core 5 位小数 | .NET 5
- mysql - aws 教育 RDS - 设置 MYSQL 数据库时出错