我正在尝试根据另一列(日期)的一系列日期创建一个新列(fishing_year)。本质上,我想说的是,例如,当日期范围在“2019-04-01”~“2020-03-31”之间时,在新列中分配 2019 年。谁能帮我完成所需的脚本吗?我已将日期列转换为日期对象,并以各种形式尝试了此脚本(如下),但无济于事。在 R 中,我的日期输出看起来像这样 2019-04-01,但是当我导出到 csv 时,它看起来像这样
fishing_year=gpr_df_R %>%
mutate(fishing_year=case_when(date = ('2019-04-01' ~ '2020-03-31') ~"2019",('2020-04-01' ~ '2021-03-31')~"2020", ('2021-04-01' ~ '2022-03-31')~"2021",('2022-04-01' ~ '2023-03-31')~"2022",('2023-04-01' ~ '2024-03-31')~"2023"))
这是另一种方法,使用 lubridate 的
year()
函数:
library(tidyverse)
gpr_df_R |>
mutate(date = ymd(date),
fishing_year = ifelse(month(date) < 4, year(date) - 1, year(date)))
输出:
date fishing_year
1 2019-04-01 2019