2015-08-26 3 views
0

У меня есть набор данных, который, как мне кажется, предоставляется с шагом 20 минут. Графы года и месяца приведены в стандартном десятичном значении. Но данные Day и Hour/Min/Sec приводятся в виде комбинированного десятичного знака (первая цифра - «День», после десятичных знаков - это время). Например:Преобразование комбинированного десятичного формата день/время в POSIX

Year  month decimal.day 
2014  1  1.0139 
2014  1  1.0278 
2014  1  1.0417 
2014  1  1.0556 
2014  1  1.0694 
2014  1  1.0833 
2014  1  1.0972 
2014  1  1.1111 
2014  1  1.1250 
2014  1  1.1389 
2014  1  1.1528 
2014  1  1.1667 
2014  1  1.1806 
2014  1  1.1944 
    .  .  . 
    .  .  . 
    .  .  . 
    . 
2014  1  1.9722 
2014  1  1.9861 
2014  1  2.0000 
2014  1  2.0139 
2014  1  2.0278 
2014  1  2.0417 
2014  1  2.0556 
2014  1  2.0694 
2014  1  2.0833 

Использование R, возможно ли преобразовать десятичный стол.day в стандартный формат времени? В конце я хотел бы объединить все 3 столбца в стандартный формат POSIX «YYYY-MM-DD HH: MM: SS».

+3

возможно дубликат [Как преобразовать десятичное в POSIX времени] (http://stackoverflow.com/questions/14483629/how-convert-decimal-to-posix-time) – jeremycg

+0

Предлагаемый дублированный вопрос касается только временной составляющей десятичного числа (H: M: S). Вышеуказанные десятичные числа включают элемент даты и времени (День H: M: S) – Vinterwoo

ответ

2

Вы можете использовать as.POSIXct(), чтобы сделать это:

as.POSIXct.numeric((df$decimal.day-1)*24*3600, 
        origin=paste(df$Year, df$month, 1, sep = "/"), tz="GMT") 

Обратите внимание на -1, чтобы сбалансировать, начиная с первого дня месяца