如何对齐日期

How to align the date

current_dataframe ,如何对齐start_day end_day 并保持date_gap不变(是否可用包或功能)?谢谢!

library(tidyverse)
current_dataframe <- data.frame(start_day=c('2022/1/19','2022/2/19','2022/4/19'),
           end_day=c('2022/1/25','2022/2/20','2022/4/24'))

使用 lubridate 包处理日期。使用 ymd 将字符串转换为日期格式。然后floor_date可以给你这个月的第一天(它也可以做其他单位)。

library(tidyverse)
library(lubridate)

current_dataframe <- data.frame(start_day=c('2022/1/19','2022/2/19','2022/4/19'),
                                end_day=c('2022/1/25','2022/2/20','2022/4/24'))

current_dataframe %>% 
    mutate(across(c(start_day, end_day), ymd),
           days_gap = end_day - start_day,
           start_day = floor_date(start_day, "month"),
           end_day = start_day + days_gap)