我有一个如下所示的文件路径:
path<-"C:/My files/Summer/2021 Holiday/2021/April"我的目标是编写一段代码,根据"2021“和”4月“部分提取月末日期,格式如下:30.04.2021
我试过这个:
year_month<-tail(unlist(strsplit(path, "/")),2)
得到了这个,却不知道如何继续。
[1] "2021" "April"发布于 2021-06-29 16:07:23
使用Lubridate,我们可以从路径中日期的月份和年份开始,在每月的第一天形成一个日期。然后,我们可以添加一个月并减去一天,以获得实际月份的最后一天。
require(lubridate)
path <- "C:/My files/Summer/2021 Holiday/2021/April"
sub_path <- sub(".*/(?=.*/)", "", path, perl=TRUE)
parts <- strsplit(sub_path, "/")[[1]]
d <- ymd(as.Date(paste0("01", parts[2], parts[1]), "%d%B%Y")) %m+% months(1) - days(1)
d
[1] "2021-04-30"发布于 2021-06-29 20:06:23
您可以借助basename和dirname函数来提取月份和年份。我们可以使用as.yearmon来获得所需的输出。
library(zoo)
path<-"C:/My files/Summer/2021 Holiday/2021/April"
paste(basename(path), basename(dirname(path))) |>
as.yearmon() |>
as.Date(frac = 1)
#[1] "2021-04-30"发布于 2021-06-29 16:04:40
试试看
lubridate::ceiling_date(lubridate::dmy('30.04.2021'),'month')-1
> [1] "2021-04-30"
lubridate::ceiling_date(lubridate::dmy('21.05.2021'),'month')-1
> [1] "2021-05-31"https://stackoverflow.com/questions/68174611
复制相似问题