юлианские даты as.date

Я пытаюсь запустить простую регрессию в R (mac OSX), чтобы увидеть, улучшился ли уровень экологической сертификации с течением времени, среди прочего. Данные, которые я загрузил, предлагают уровень от 1 до 4 и даты в формате 1 марта-12. Кажется, я не могу заставить R преобразовать даты, и я продолжаю получать одно и то же сообщение об ошибке. Переменные имеют одинаковую длину.

$ certification_date: chr  "1-Aug-11" "1-Aug-11" "1-Aug-11" "1-Jul-11" ...

jday<-as.Date('certification_date',format='%d-%b-%y',"%j")
mod <- lm(Level_number ~ jday, data=data)

Error in model.frame.default(formula = Level_number ~ jday, data = data,  : 
  variable lengths differ (found for 'jday')

summary(jday)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  NA      NA      NA      NA      NA      NA     "1" 

Может ли кто-нибудь заметить, где я ошибся?


person user2298582    schedule 19.04.2013    source источник
comment
удалите одинарные кавычки вокруг 'certification_date' при вызове as.Date   -  person Nishanth    schedule 19.04.2013


Ответы (1)


Вы должны удалить кавычки вокруг certification_date, как указано в комментарии, но %b — это сокращенное название месяца в текущей локали. Таким образом, вы можете получить еще одну проблему с вашими местными жителями. Здесь я представляю независимое локальное решение:

## get your current local time
loc <- Sys.getlocale('LC_TIME')  
## set the local to english , since %b is local dependent 
Sys.setlocale('LC_TIME','ENGLISH')
jday <-as.Date(certification_date,format='%d-%b-%y',"%j")
Sys.setlocale('LC_TIME',loc)

Результат:

jday
[1] "2011-08-01" "2011-08-01" "2011-08-01" "2011-07-01"
person agstudy    schedule 19.04.2013