将一年中的某一天分成月份和月份中的日期列

Separate day of year into month and day of month columns in R

为简单起见,我的数据有两列。一列是年份(year),另一列是天数(yday)。因此,值为 1980 的年份和值为 1 的 yday 为 1980 年 1 月 1 日。值为 1980 的年份和值为 365 的 yday 为 1980 年 12 月 31 日。如何将单个 yday 列分成两列;月份列和月份列的日期?例如,365 表示月份为 12,日为 31。提前致谢。

yday + year 列创建一个日期,然后分别提取日期和月份:

dat <- data.frame(year=1980, yday=c(1,365))

#  year yday
#1 1980    1
#2 1980  365

dat[c("month","day")] <- lapply(c("%m","%d"), \(x) {
  d <- as.Date(paste(dat$year, dat$yday), format="%Y %j")
  as.integer(format(d, x)) 
}) 
#  year yday month day
#1 1980    1     1   1
#2 1980  365    12  30