【发布时间】:2021-04-16 23:24:58
【问题描述】:
我使用 R 相对较新,我想使用“case when”语句为我的表创建一个名为 Reporting Month(格式:Date)的新列,条件是使用一个名为 Period(格式:Character)的列 执行的代码但日期的输出仅在 2020 年 1 月 1 日到 2020 年 12 月 31 日的范围内,2019 年或 2021 年没有,有人可以帮忙吗?如果有更简洁的方法可以做到这一点,我也非常感谢您的一些建议!非常感谢!!
dt <- dt %>% mutate(
Reporting_Month = case_when(
Period == 'ZZZ-MARCH-2019' ~ as.Date("31/03/2019", format("%d/%m/%y")),
Period == 'ZZZ-APRIL-2019' ~ as.Date("30/04/2019", format("%d/%m/%y")),
Period == 'ZZZ-MAY-2019' ~ as.Date("31/05/2019", format("%d/%m/%y")),
Period == 'ZZZ-JUNE-2019' ~ as.Date("30/06/2019", format("%d/%m/%y")),
Period == 'ZZZ-JULY-2019' ~ as.Date("31/07/2019", format("%d/%m/%y")),
Period == 'ZZZ-AUGUST-2019' ~ as.Date("31/08/2019", format("%d/%m/%y")),
Period == 'ZZZ-SEPTEMBER-2019' ~ as.Date("30/09/2019", format("%d/%m/%y")),
Period == 'ZZZ-OCTOBER-2019' ~ as.Date("31/10/2019", format("%d/%m/%y")),
Period == 'ZZZ-NOVEMBER-2019' ~ as.Date("30/11/2019", format("%d/%m/%y")),
Period == 'ZZZ-DECEMBER-2019' ~ as.Date("31/12/2019", format("%d/%m/%y")),
Period == 'ZZZ-JANUARY-2020' ~ as.Date("31/01/2020", format("%d/%m/%y")),
Period == 'ZZZ-FEBRUARY-2020' ~ as.Date("29/02/2020", format("%d/%m/%y")),
Period == 'ZZZ-MARCH-2020' ~ as.Date("31/03/2020", format("%d/%m/%y")),
Period == 'ZZZ-APRIL-2020' ~ as.Date("30/04/2020", format("%d/%m/%y")),
Period == 'ZZZ-MAY-2020' ~ as.Date("31/05/2020", format("%d/%m/%y")),
Period == 'ZZZ-JUNE-2020' ~ as.Date("30/06/2020", format("%d/%m/%y")),
Period == 'ZZZ-JULY-2020' ~ as.Date("31/07/2020", format("%d/%m/%y")),
Period == 'ZZZ-AUGUST-2020' ~ as.Date("31/08/2020", format("%d/%m/%y")),
Period == 'ZZZ-SEPTEMBER-2020' ~ as.Date("30/09/2020", format("%d/%m/%y")),
Period == 'ZZZ-OCTOBER-2020' ~ as.Date("31/10/2020", format("%d/%m/%y")),
Period == 'ZZZ-NOVEMBER-2020' ~ as.Date("30/11/2020", format("%d/%m/%y")),
Period == 'ZZZ-DECEMBER-2020' ~ as.Date("31/12/2020", format("%d/%m/%y")),
Period == 'ZZZ-JANUARY-2021' ~ as.Date("31/01/2021", format("%d/%m/%y")),
TRUE ~ as.Date("31/01/2000")
)
)
【问题讨论】:
-
使用'lubridate::ceiling_date`,事情会容易得多
-
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。