将一年中的天数转换为 month/day 格式
convert day-number within the year to month/day format
我正在尝试将一年中的天数转换为 month/day 格式。
有了这个 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
date/time 列?
虽然有许多相关帖子的起始日期为 Julian 日期(通常为 1970-01-01),但我找不到任何日期编号在一年内且年份可变的帖子(即 2015 年和 2016 年)。
as.POSIXct
函数有一个选项可以指定从 "Julian" 日期转换为 date/time 对象时的起始日期:
#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"
我正在尝试将一年中的天数转换为 month/day 格式。
有了这个 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
date/time 列?
虽然有许多相关帖子的起始日期为 Julian 日期(通常为 1970-01-01),但我找不到任何日期编号在一年内且年份可变的帖子(即 2015 年和 2016 年)。
as.POSIXct
函数有一个选项可以指定从 "Julian" 日期转换为 date/time 对象时的起始日期:
#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"