【问题标题】:sqldf query returns 0 valuessqldf 查询返回 0 个值
【发布时间】:2016-10-08 21:39:44
【问题描述】:

我在对示例数据集运行基本查询时遇到问题(链接如下) http://kbcdn.tableausoftware.com/data/Superstore.xls 使用 R.

我在下面附上了我的代码。

#read file with XLConnect
path <- file.path("/Users/petergensler/Desktop/Sample - Superstore Sales.xls")
superstore <- readWorksheetFromFile(path, sheet= "Orders")


 #Query
    test <- sqldf("SELECT * FROM superstore WHERE 'Product Sub-Category' = 'Appliances'",)
    test

查询执行良好,但返回以下结果:

[1] Row.ID               Order.ID             Order.Date           Order.Priority       Order.Quantity       Sales               
 [7] Discount             Ship.Mode            Profit               Unit.Price           Shipping.Cost        Customer.Name       
[13] Province             Region               Customer.Segment     Product.Category     Product.Sub.Category Product.Name        
[19] Product.Container    Product.Base.Margin  Ship.Date           
<0 rows> (or 0-length row.names)

我的附加包有什么问题会导致查询运行错误,还是我的数据有问题?我正在查询的列似乎很好,因为它是一个类型字符,并且指定的文字字符串应该与值匹配(除非它们是尾随空格),对吗?

我正在使用以下会话信息在 Mac OS X 10.11.5 上运行 R:

session_info() 会话信息------------------------------------------------ ------------------------------------------ 设定值
版本 R 版本 3.3.0 (2016-05-03) 系统 x86_64,darwin13.4.0
ui RStudio (0.99.896)
语言 (EN)
整理 en_US.UTF-8
tz 美国/芝加哥
日期 2016-06-08

我还将我的包裹附加到当前会话中。

https://drive.google.com/open?id=0Bxhxg_yftHNubEc4NUZTUVoxa0E

感谢您的帮助!

【问题讨论】:

  • 单引号包围常量,而不是列名。列名可以用双引号、方括号或反引号括起来。

标签: mysql sql r sqldf


【解决方案1】:

跟进 G. Grothndieck 所说的(使用括号作为列名)我运行了这个,它对我有用:

#Query
test <- sqldf(x = "SELECT * FROM superstore WHERE [Product.Sub.Category] = 'Appliances'")
test

大多数读取数据框的方法会将列名中的空格和连字符更改为.,因此您需要更新其中的那部分。

【讨论】:

  • 在使用read.tabledata.frame时可以使用check.names=FALSE参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
相关资源
最近更新 更多