2016-07-20 3 views
1

Die folgenden Mitarbeiter Tabelle ist von http://www.analyticsvidhya.com/blog/2015/12/sql-commands-common-excel-operations/. Der Code, der der Tabelle folgt, basiert auf Beispiel 8B.Fehler mit linkstrstr und Spalte Name mit Zeitraum mit sqldf in R

Employee <- structure(list(ECODE = c("A011", "A001", "A007"), DOJ = 
c("3-Jul-12", "12-Jun-12", "13-Aug-12"), Experience = c(2.1, 2.2, 2), 
Gender = c("Male", "Male", "Female"), Department = c("Support", "Admin", 
"Support"), No_Of_Hours = c(17.42, 15.45, 13.54), Pay_Per_Hours = c(40L, 
45L, 44L), Total_Payout = c(696.8, 695.25, 595.72), City = c("Delhi", 
"Delhi", "Mumbai")), .Names = c("ECODE", "DOJ", "Experience", "Gender", 
"Department", "No_Of_Hours", "Pay_Per_Hours", "Total_Payout", "City"), 
row.names = c(NA, -3L), class = c("data.table", "data.frame")) 

# Employee 
#  ECODE DOJ  Experience Gender Department No_Of_Hours 
# 1: A011 3-Jul-12 2.1  Male Support  17.42 
     Pay_Per_Hours 
     40 
# 2: A001 12-Jun-12 2.2  Male Admin   15.45    
     45 
# 3: A007 13-Aug-12 2.0  Female Support  13.54    
     44 
#  Total_Payout City 
# 1: 696.80   Delhi 
# 2: 695.25   Delhi 
# 3: 595.72   Mumbai 

In Beispiel 8B [LEFT (x, N)] verwendet wird, aber ich herausgefunden, dass Leftstr (how to use right/left to split a variable in sqldf, as in left(x,n)) ist so, wie es in sqldf erfolgt.

Da im Spaltennamen kein Sonderzeichen (".") Vorhanden ist, funktioniert die Operation wie erwartet.

sqldf("Select *, Leftstr(City,3) as 'City_Code' from Employee where 
Department = 'Admin'") 

# ECODE DOJ   Experience Gender Department No_Of_Hours 
# 1 A001 12-Jun-12 2.2   Male  Admin  15.45  
# Pay_Per_Hours Total_Payout City City_Code 
# 45    695.25  Delhi Del 

Im Beispiel unten, die zu meiner eigentlichen Datensatz ähnlich ist, gibt es eine Periode, in dem Spalte Namen und die Antwort ist nicht zu erwarten.

sqldf("Select *, Leftstr('City.1',3) as 'City_Code' from Employee where 
Department = 'Admin'") 

# ECODE DOJ   Experience Gender Department No_Of_Hours 
# 1 A001 12-Jun-12 2.2   Male  Admin  15.45  
# Pay_Per_Hours Total_Payout City City_Code 
# 45    695.25  Delhi Cit 

Was ist mit dem sqldf Code getan werden muss, wenn ein Sonderzeichen im Namen leftstr Operationen Spalte ist?

+0

Mögliche Duplikat [Fehler: Keine solche Spalte SQLDF] (http://stackoverflow.com/questions/23451139/ error-no-so-Spalte-using-sqldf) – zx8754

Antwort

1

Einfache Anführungszeichen umgeben Konstanten. Um auf einen Spaltennamen zu verweisen, umschließen Sie ihn mit doppelten Anführungszeichen oder mit eckigen Klammern. Unter der Annahme, dass die City Spalte gestattet City.1 statt:

sqldf("Select *, Leftstr([City.1],3) as 'City_Code' from Employee where 
    Department = 'Admin'") 

geben:

ECODE  DOJ Experience Gender Department No_Of_Hours Pay_Per_Hours 
1 A001 12-Jun-12  2.2 Male  Admin  15.45   45 
    Total_Payout City.1 City_Code 
1  695.25 Delhi  Del 
+0

@ G. Grothendieck Vielen Dank für die Antwort und Erklärung. – iembry

Verwandte Themen