r - 使用 lubridate 将单独的 'year' 和 'day' 列转换为一个 'date' 列?

标签 r lubridate

我有一列用于“年”,一列用于“日”(儒略日),我想使用这些列来制作“日期”(2002-12-03 或任何格式都可以)。我发现了很多关于分手日期的 lubridate 文献,但我正在寻找如何将它们放在一起。

听起来很简单:

year    day    
2008    1
2008    2
2008    3
2008    4

year    day    date
2008    1    2008-1-1
etc.

最佳答案

如果你愿意,你可以使用基准日期而不是 lubridate

如果这是你的样本数据

dd<-data.frame(
    year = rep(2008,4), 
    day = 1:4
)

然后就可以运行了

years <- unique(dd$year)
yearstarts <- setNames(as.Date(paste0(years, "-01-01")), years)
newdates <- yearstarts[as.character(dd$year)] + dd$day - 1

产生

cbind(dd, newdates)

#   year day   newdates
# 1 2008   1 2008-01-01
# 2 2008   2 2008-01-02
# 3 2008   3 2008-01-03
# 4 2008   4 2008-01-04

这是有效的,因为基 Date 类存储自特定标记值以来的天数。所以当你加 1 时,你在当前日期上加了一天。在这里,我假设您可能有多年的时间来确保正确计算每年第一天的日期值。

关于r - 使用 lubridate 将单独的 'year' 和 'day' 列转换为一个 'date' 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191286/

相关文章:

r - 选择与另一个多边形相交(或完全在其中)的多边形 [R sf]

R - 在保持记录顺序的同时删除重复列表

c++ - 在 Rcpp 函数中使用 Bool-Vector 进行子集化(Rcpp 初学者的问题...)

r - 检查组中的任何日期是否在 r 中该组的特定时间间隔内

早高峰时间的 R 检验 - 区间内的时间向量

重新投影 SpatialPointsDataFrame 不会更改范围

r - 在查找表中使用多个引用值

r - "parse_dt"未从当前命名空间解析 (lubridate)

r - 根据 R 中的日期类型确定重叠的日期间隔

r - 如何用 R 提取一天中的分钟数?