sqldf查询返回0值

时间:2016-06-08 14:35:37

标签: mysql sql r sqldf

我在对样本数据集运行基本查询时遇到问题(链接如下) 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)    system x86_64,darwin13.4.0
   ui RStudio(0.99.896)
   语言(EN)
   整理en_US.UTF-8
   tz America / Chicago
   日期2016-06-08

我还附加了附加到当前会话的包。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

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