2015-03-17 2 views
1

Я хочу, чтобы преобразовать строку в DateTime в R.конвертировать строку даты и времени R

Для меня, например, «20110101000» как строка. Я хочу преобразовать это в datetime '2011-01-01 00:00.' Также я хотел бы '2011-01-01 01:00' минус '2011-01-01 00:00' = 1 час. В конце концов, я хотел бы иметь условие, при котором, если разница во времени между двумя временами дата не равна 1 час

if(diff != 1){do something} 

В настоящее время я использовал as.Date, который прекрасно работает для преобразования строки с датами, но не имеет никаких вариантов времени. Также структура с POSIXt дает мне странный результат.

structure('201101010000',class=c('POSIXt', 'POSIXct')) 
[1] "8342-08-21 19:40:00 EDT" 

У меня есть 100 000 + файлов, которые должны выполнить эту операцию. Пожалуйста, дайте мне знать о наиболее эффективном решении.

+0

Не используйте 'structure' - это не дружественный к пользователю средства для создания объектов - попробуйте, например:' as.POSIXct ("20110101000", формат = "% Y% м% d% H% M ")' Хотя это не удастся для '' 20110101100 '', потому что он будет думать, что у вас есть 10 утра вместо 1 утра, поскольку нет разделителя для часа/минут. – thelatemail

ответ

8

Вы можете использовать пакет Base R.

конвертировать даты в POSIXcts. Посмотрите на код ниже.

dt1 <- c("201101010100") 
    dt2 <- c("201101010200") 

    date1 <- as.POSIXct(dt1, format="%Y%m%d%H%M") 
    date2 <- as.POSIXct(dt2, format="%Y%m%d%H%M") 

    diff <- difftime(date2, date1, units="hours") 
    if(diff != 1) { 
    print("do something") 
    }