2016-07-02 5 views
0

Ниже часть моих данных:Изменение формата даты в г с strptime и as.Date

 Date  Elev Temp.C 
1 02 January 2010 200 14.7 
2 02 January 2010 300 5 
3 02 January 2010 500 -2 
4 02 January 2010 1000 -9.8 
5 02 January 2010 2000 -7.1 

Я хотел изменить формат даты, чтобы 2010-01-01 или "%Y-%m-%d". Класс data является character и я попытался следующим образом:

data$Date<-as.Date(data$Date,format="%d%B%Y") 

data$Date<-as.Date(data[["Date"]],"%d%B%Y") 

data$Date<-strptime(data$Date,"%d%B%Y") 

Всех вышеуказанных испытаний показывает <NA> в столбце Date. У меня есть другой файл данных с форматом даты "%m/%d/%Y", он отлично работал с strptime, но для вышеуказанного набора данных он не работает. Есть идеи?

+0

@ Zheyuan Li что вы имеете в виду '% B' чувствителен? – G1124E

+0

@ Zheyuan Li "English_United States.1252" – G1124E

+0

@ZheyuanLi Я получил '' 2016-03-02 "' – G1124E

ответ

1

Проблема связана с вашей локалью. Если вы посмотрите на ?strptime, вы увидите:

‘%B’ Full month name in the current locale. (Also matches 
     abbreviated name on input.) 

Это означает, что %B чувствителен к вашей местности. Посмотрите на ?locales, если вы не знаете, что такое локаль. Когда я спросил вас о выходе Sys.getlocale("LC_TIME"), вы сказали, что у вас есть "English_United States.1252". Теперь давайте сначала изменить региональные настройки:

Sys.setlocale("LC_TIME", "C") 

Затем сделайте:

as.Date("02 January 2010", "%d %B %Y") 
# [1] "2010-01-02" 

Примечание, так как пустое пространство между «02», «январь» и «2010», вам нужно оставить пустое место между %d, %B, %Y. Итак, не используйте "%d%B%Y" как помещено в сообщение, но используйте "%d %B %Y".