【发布时间】:2020-11-03 15:54:47
【问题描述】:
我有一个数据框,其中包含多年的日期。看起来像这样(而不是三年,我有 40 年):
DATES<-c(seq(as.Date('2017-01-01'), as.Date('2019-12-31'), by = 'days'))
df<-data.frame(DATES)
对于我想添加季节的每一天。因此,春季应从 3 月 20 日开始,夏季从 6 月 21 日开始,秋季从 9 月 23 日开始,冬季从 12 月 21 日开始。这些日期多年来保持不变。
我想出了以下代码,它有效(至少,我认为是这样)。但是,我想知道,如果没有更优雅的方式来获得我想要的东西。
df$MONTH<-month(df$DATES)
df$DAY<-mday(df$DATES)
df$DAY_PLUS_MONTH<-df$DAY+df$MONTH*100
df <- df %>%
mutate(SEASON = case_when(
DAY_PLUS_MONTH %in% 320:620 ~ 'SPRING',
DAY_PLUS_MONTH %in% 621:922 ~ 'SUMMER',
DAY_PLUS_MONTH %in% 923:1221 ~ 'AUTUMN',
TRUE ~ 'WINTER'))
【问题讨论】:
-
这个问题有一堆解决方案here
标签: r