【问题标题】:How to convert Julian day and year to a date format and calculate elapsed time in R如何将儒略日和年份转换为日期格式并计算 R 中的经过时间
【发布时间】:2015-07-21 19:38:36
【问题描述】:

我有一个矩阵,其中包含年 (YYYY)、儒略日和时间 (HHMM) 的单独列。我想附加一个带有完整公历日期(“MM/DD/YYYY”)的列向量以及一个列向量,它会给我以天为单位的经过时间。我该怎么办?
明确地说,我指的是这些朱利安时代:http://landweb.nascom.nasa.gov/browse/calendar.html 感谢您的帮助。

C7 <- read.table(text="Year   Day   Time    
2015   193    915
2015   193    930
2015   195   1400
2015   195   1415", header=T) 

我想添加这两列:

Year   Day   Time      Date       Elapsed Time (Days)     
2015   193    915    07/12/2015      0.00     
2015   193    930    07/12/2015      0.01    
2015   195   1400    07/14/2015      2.20    
2015   195   1415    07/14/2015      2.21     

【问题讨论】:

  • 请创建一个reproducible example。包括一些示例输入数据并显示所需的输出。以这种方式提供帮助要容易得多。
  • 感谢您的编辑。无法弄清楚如何格式化它以显示这种方式。如您所知,我对 R 很陌生。

标签: r date elapsedtime julian-date


【解决方案1】:

首先,我会将这些值转换为正确的 POSIXt 日期/时间值。在这里,我将所有内容粘贴到一个字符串中,使用一些数学方法将小时和分钟分开

pdates <- with(C7, strptime(paste(Year,Day,Time %/% 100, Time %% 100), "%Y %j %H %M"))

现在我们可以通过向下转换为 Date 并使用 difftime() 来获得您想要的列。

format(pdates, "%m/%d/%Y")
# [1] "07/12/2015" "07/12/2015" "07/14/2015" "07/14/2015"

round(c(difftime(pdates, min(pdates), units="days")),2)
# [1] 0.00 0.01 2.20 2.21

【讨论】:

  • 这是我的一个老问题,但我想知道是否有一种方法可以使用上述建议的代码,但在计算经过时间时有一个确定的最小日期?我需要使用数据框中尚未包含的最小日期(2014 年 10 月 12 日下午 12:00)。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多