将一年中的某一天分成月份和月份中的日期列
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
为简单起见,我的数据有两列。一列是年份(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