Преобразовать измененную юлианскую дату в UTC
У меня большой файл, содержащий около 200 000 строк, и я хотел бы получить его таким образом, чтобы я мог использовать пакет zoo для построения графика и усечения по дате, месяцу и времени. Первый столбец - измененная юлианская дата, а второй - температура.
Буду признателен за любую помощь. Файл выглядит так:
4812663507.000000,1.76438
4812663512.000000,1.65121
4812663517.000000,1.60362
4812663522.000000,1.51509
1 ответ
Судя по комментариям, время выражается в каких-то секундах в MDJ, поэтому вы можете преобразовать его в указатель времени с помощью подсказки Габора:
library(zoo)
z <- read.zoo("myfile.dat", sep = ",",
FUN = function(x){as.POSIXct(x,origin='1858-11-17',tz='UTC')})
Где 1858-11-17 - эпоха MJD согласно http://en.wikipedia.org/wiki/Julian_day
В качестве альтернативы вы можете указать источник и добавить секунды с тех пор:
z <- read.zoo("myfile.dat", sep = ",",
FUN = function(x){as.POSIXct('1858-11-17',tz='UTC')+x})
Тогда, кажется, вам нужны данные, агрегированные по разным гранулярностям во времени:
plot(aggregate(z,cut(time(z),breaks='year' ),mean))
plot(aggregate(z,cut(time(z),breaks='quarter'),mean))
plot(aggregate(z,cut(time(z),breaks='month' ),mean))
plot(aggregate(z,cut(time(z),breaks='day' ),mean))
plot(aggregate(z,cut(time(z),breaks='hour' ),mean))
plot(aggregate(z,cut(time(z),breaks='6 min' ),mean))
plot(aggregate(z,cut(time(z),breaks='min' ),mean))
plot(aggregate(z,cut(time(z),breaks='10 sec' ),mean))
plot(aggregate(z,cut(time(z),breaks='sec' ),mean))