2016-06-08 7 views
0

Ich bin ein Problem mit einer grundlegenden Abfrage auf einem Beispieldatensatz ausgeführt wird (Link unten) http://kbcdn.tableausoftware.com/data/Superstore.xls R. mitsqldf Abfrage gibt 0 Werte

Ich habe meinen Code unten angebracht.

#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 

Die Abfrage führt in Ordnung, aber es gibt die folgenden Ergebnisse:

[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) 

Gibt es etwas falsch mit meinen angebrachten Paketen, die die Abfrage verursachen würden, falsch laufen, oder ist es etwas mit meinem Daten? die Spalte, die ich abfrage, scheint in Ordnung zu sein, da es ein Typzeichen ist, und die Angabe einer Literalzeichenfolge sollte mit den Werten übereinstimmen (es sei denn, sie sind nachgestellte Leerzeichen), richtig?

Ich bin mit R auf Mac OS X 10.11.5 mit der folgenden Sitzung Info:

session_info() Session info ----------------- -------------------------------------------------- ------------------------ Einstellwert
Version R Version 3.3.0 (2016-05-03) System x86_64, darwin13.4.0
ui RStudio (0.99.896)
Sprache (DE)
sortieren en_US.UTF-8
tz America/Chicago
Datum 2016-06-08

Ich habe meine Pakete auch als auch an der aktuellen Sitzung angebracht angebracht.

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

Vielen Dank für Ihre Hilfe!

+0

Einfache Anführungszeichen umgeben Konstanten, keine Spaltennamen. Spaltennamen können in Anführungszeichen, eckigen Klammern oder Backticks eingeschlossen werden. –

Antwort

0

Im Anschluss an was G. Grothndieck sagte (Verwendung Klammern für Spaltennamen) lief ich dies und es funktionierte für mich:

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

Die meisten Methoden von in Datenrahmen Leseräume und Bindestriche in Spaltennamen ändern in . so müssen Sie diesen Teil davon aktualisieren.

+1

Sie können das Argument 'check.names = FALSE' verwenden, wenn Sie' read.table' und 'dat.frame' verwenden. –