簡體   English   中英

將年內的天數轉換為月/日格式

[英]convert day-number within the year to month/day format

我正在嘗試將年內的天數轉換為月/日格式。

使用此df:

set.seed(123)
df1 <- data.frame(Year = rep(15,100), DayNum = seq(78,177,1), Hour = sample(0:23,100,replace = T))
df2 <- data.frame(Year = rep(16,100), DayNum = seq(78,177,1), Hour = sample(0:23,100,replace = T))

df <- rbind(df1, df2)
> head(df)
  Year DayNum Hour
1   15     78    6
2   15     79   18
3   15     80    9
4   15     81   21
5   15     82   22
6   15     83    1
> tail(df)
    Year DayNum Hour
195   16    172   22
196   16    173   11
197   16    174    9
198   16    175   15
199   16    176    3
200   16    177   13

其中有2015年和2016年的100條記錄,如何制作POSIXct日期/時間列?

雖然有許多相關帖子的起始日期是儒略歷(通常是1970-01-01),但我找不到任何一年內且天數可變且年份(即2015年和2016年)的帖子。

從“ Julian”日期轉換為日期/時間對象時, as.POSIXct函數具有一個選項來指定原始日期:

#calculate the origin date based on the year column
df$origin<-as.Date(paste0("20", df$Year,"-01-01"))
#convert the Julian day to a date/time object
as.POSIXct(df$JulianDay, origin=df$origin)

為了完整性,可能需要考慮添加時區選項:

 as.POSIXct(df$JulianDay, origin=df$origin, tz="GMT")

您可能需要這樣的東西,使用%j來指定一年中的日子:

strptime(with(df, paste(Year, DayNum, Hour)), "%y %j %H")

# [1] "2015-03-19 06:00:00 EDT"
# [2] "2015-03-20 18:00:00 EDT"
# [3] "2015-03-21 09:00:00 EDT"
# [4] "2015-03-22 21:00:00 EDT"
# [5] "2015-03-23 22:00:00 EDT"

暫無
暫無

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

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