2015-06-14 1 views
1

У меня есть сообщение об ошибке, когда я запускаю пакет sqldf для datename или datepart. Вот таблица, которую я использовал.ERROR использовать имя_данных/datepart в пакете R sqldf

Height Date 
163 12/01/90 
182 11/13/88 
167 5/14/97 
172 3/18/94 
170 10/11/92 
185 7/15/90 


expected_table <-sqldf("select 
       [Height], 
       (datename(weekday,[Date])) AS [Day of Week] 
       from table1 

       ") 

Error in sqliteSendQuery(con, statement, bind.data) : 
    error in statement: no such column: weekday      

Если нет, может ли он каким-либо образом получить будний день с [Дата]?

+1

Это зависит от базы данных. 'datename()' специфичен для SQL Server (фактически T-SQL, поэтому он работает и в Sybase). –

+0

Это, как говорится, обновите свой вопрос с помощью базы данных, которую вы используете. –

+0

@TimBiegeleisen прилагается. – user3849475

ответ

2

sqldf - это тонкий слой, который передает данные и инструкцию SQL на задний конец по вашему выбору. Задний конец по умолчанию - sqlite, но он также поддерживает H2, PostgreSQL и MySQL. SQLite не поддерживает datename но H2 поддерживает dayname:

# reproducibly set up input data frame 
Lines <- "Height Date 
163 12/01/1990 
182 11/13/1988 
167 5/14/1997 
172 3/18/1994 
170 10/11/1992 
185 7/15/1990" 
DF <- read.table(text = Lines, header = TRUE) 
DF$Date <- as.Date(DF$Date, "%m/%d/%Y") # Date class 

library(RH2) # if RH2 is loaded sqldf will automatically use H2 instead of sqlite 
library(sqldf) 

sqldf("select *, dayname(Date) Weekday from DF") 

даяние:

Height  Date Weekday 
1 163 1990-12-01 Saturday 
2 182 1988-11-13 Sunday 
3 167 1997-05-14 Wednesday 
4 172 1994-03-18 Friday 
5 170 1992-10-11 Sunday 
6 185 1990-07-15 Sunday 

Примечание: Конечно, это также легко сделать это в прямой R:

transform(DF, Weekday = format(Date, "%A")) 

:

Height  Date Weekday 
1 163 1990-12-01 Saturday 
2 182 1988-11-13 Sunday 
3 167 1997-05-14 Wednesday 
4 172 1994-03-18 Friday 
5 170 1992-10-11 Sunday 
6 185 1990-07-15 Sunday 
+0

, когда я использую преобразование (DF, Weekday = format (Date, «% A»)), появляется сообщение об ошибке: Ошибка в формате.default (структура (as.character (x), names = names (x), dim = dim (x),: Недопустимый аргумент 'trim' – user3849475

+0

Начните новый новый сеанс R. Не вводите в него ничего. Просто скопируйте и вставьте все из 'Lines <- ...' в 'DF $ Date <- as.Date (DF $ Date, "% m /% d /% Y") 'для создания фрейма данных, а затем копирования и вставки' transform (DF, Weekday = format (Date, "% A")) ' –

+0

Когда Я набираю DF $ Date <- as.Date (DF $ Date, «% m /% d /% Y»), вся дата изменилась на «0090-12-01», «0088-11-13» – user3849475