3

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

听起来很简单:

year    day    
2008    1
2008    2
2008    3
2008    4

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

1 回答 1

3

如果您愿意,可以使用基准日期而不是 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 时,您将在当前日期添加一天。在这里,我假设您可能有多年的时间来确保正确计算每年第一天的日期值。

于 2014-06-12T18:26:49.283 回答