2012-03-25 2 views
7

У меня есть погодные данные. Я видел примеры функций отсюда: http://casoilresource.lawr.ucdavis.edu/drupal/node/991Конвертировать Время в 12 часов до 24 часов Время

Я изменяю код для учета данных аэропорта, который имеет другой тип URL. Еще одна проблема с метеорологическими данными аэропорта заключается в том, что данные времени сохраняются в 12-часовом формате. Вот пример данных:

14 10:43 AM 
15 10:54 AM 
16 11:54 AM 
17 12:07 PM 
18 12:15 PM 
19 12:54 PM 
20 1:54 PM 
21 2:54 PM 

Вот что я попытался (я вижу, что, используя только «PM» не достаточно внимательны, потому что любые времена от 12 до 1 дня будет выключен, если они проходят через это alg)

date<-Sys.Date() 


data$TimeEST<-strsplit(data$TimeEST, ' ') 
for (x in 1:35){ 
    if('AM' %in% data$TimeEST[[x]]){ 
     gsub('AM','',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_c(date,' ',data$TimeEST[x],':',data$TimeEST[2]) 
    } 
    else if('PM' %in% data$TimeEST[[x]]){ 
     data$TimeEST[[x]]<-gsub('PM', '',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-strsplit(data$TimeEST[[x]], ':') 
     data$TimeEST[[x]][[1]][1]<-as.integer(data$TimeEST[[x]][[1]][1])+12 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]][[1]]) 
     data$TimeEST[[x]]<-str_c(date, " ", data$TimeEST[[x]][1],':',data$TimeEST[[x]][2]) 

    } 
} 

Любая помощь?

ответ

15

Будет strptime работы?

df2= structure(c("10:43 AM", "10:54 AM", "11:54 AM", "12:07 PM", "12:15 PM", 
      "12:54 PM", "1:54 PM", "2:54 PM"), .Dim = c(8L, 1L)) 



strptime(df2, "%I:%M %p") 

Или в случае, если вы не хотите дату, что-то вроде: Хотя это зависит, какой класс вы хотите для объекта.

substr(strptime(df2, "%I:%M %p"),11,19) 
+0

дата выпуска на самом деле довольно большой. Я хотел бы, чтобы информация о дате/времени была объектом, который может быть помещен в объект зоопарка, но больше, чем основная цель функции - вернуть данные за определенный день. Если я потеряю информацию о дате, которая предоставляется не в колонке для начала, я буду вызывать будущие головные боли. Информация о дате предоставляется пользователем, когда они вводят диапазон дат в начальную функцию. Для каждого дня в этом диапазоне читается веб-сайт, а затем данные очищаются. Часть очистки преобразуется с 12 до 24 часов. Еще раз спасибо –

+0

'# convert Time column в правильно закодированное время даты
' 'data $ TimeEST <- strptime (data $ TimeEST, format = '% I:% M% p')'
'data $ TimeEST <- substr (данные $ TimeEST, 11, 19) ' ' data $ TimeEST <- str_c (дата, данные $ TimeEST) ' ' data $ TimeEST <- as.POSIXlt (данные $ TimeEST, format = '% Y-% m- % d% H:% M:% S ') '@AndresT спасибо за предложения, это то, что я использовал для получения желаемого типа объекта. –

+0

Или 'format (strptime (df2,"% I:% M% p "),"% T ")' –

3

посмотреть ?strptime.

as.POSIXct(data$TimeEST, format='%I:%M %p') 
Смежные вопросы