簡體   English   中英

使用lubridate將單獨的'year'和'day'列轉換為一個'date'列?

[英]Convert separate 'year' and 'day' columns into one 'date' column with lubridate?

我有一個列為'year',一列為'day'(julian day),我想使用這些列來制作'date'(2002-12-03或任何格式都沒問題)。 我發現了大量有關分手日期的lubridate文獻,但我正在尋找如何將它們組合在一起。

聽起來很簡單:

year    day    
2008    1
2008    2
2008    3
2008    4

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

如果你願意,你可以使用基准日期而不是潤滑

如果這是您的樣本數據

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類存儲自特定sentinel值以來的天數。 因此,當您添加1時,您將在當前日期添加一天。 在這里,我假設您可能有多年的時間,我確保正確計算每年第一天的日期值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM