【问题标题】:Convert modified julian date to UTC将修改后的儒略日期转换为 UTC
【发布时间】:2012-08-09 18:17:34
【问题描述】:

我有一个大约 200000 行的大文件,我想以一种可以使用 zoo 包绘制文件并按日期、月份和时间截断的方式获取文件。第一列是修改后的儒略日期,第二列是温度。

如果有任何帮助,我将不胜感激。 该文件如下所示:

4812663507.000000,1.76438
4812663512.000000,1.65121
4812663517.000000,1.60362
4812663522.000000,1.51509

【问题讨论】:

  • 根据en.wikipedia.org/wiki/Julian_day,当前修改儒略日期为56148.74726。当前的朱利安日期是 2456149.24726。在我看来,第一列中的那些数字一定是在某个完全不同的系统中。
  • 正如 Jim 所指出的,它不清楚你有什么,但一旦确定了,library(zoo); z <- read.zoo("myfile.dat", sep = ",", FUN = f); plot(z) 就会这样做,f 是你指定的一个函数,可以将你拥有的任何东西转换为其中之一R 的日期或日期/时间类。您可以省略 FUN = f,它将使用第 1 列中的数字作为您的日期/时间。也许 astroFuns R 包有一些相关的东西。
  • 您好,感谢 cmets,第一列是 MJD-TAI(秒),所以我可以除以 86400 得到 MJD 天数。一旦我有几天,我如何使用 zoo 或其他软件包来绘制或分析按小时、分钟、天等截断的文件??

标签: r date zoo julian-date


【解决方案1】:

从 cmets 中,时间以某种 MDJ 秒为单位,因此您可以使用 Gabor 的提示将其转换为时间索引:

library(zoo)
z <- read.zoo("myfile.dat", sep = ",",
              FUN = function(x){as.POSIXct(x,origin='1858-11-17',tz='UTC')})

其中 1858-11-17 是每个 http://en.wikipedia.org/wiki/Julian_day 的 MJD 纪元

或者,您可以指定原点并添加秒数:

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)) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多