首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件路径提取月末日期

从文件路径提取月末日期
EN

Stack Overflow用户
提问于 2021-06-29 15:52:34
回答 5查看 41关注 0票数 1

我有一个如下所示的文件路径:

代码语言:javascript
复制
path<-"C:/My files/Summer/2021 Holiday/2021/April"

我的目标是编写一段代码,根据"2021“和”4月“部分提取月末日期,格式如下:30.04.2021

我试过这个:

year_month<-tail(unlist(strsplit(path, "/")),2)

得到了这个,却不知道如何继续。

代码语言:javascript
复制
[1] "2021"  "April"
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-06-29 16:07:23

使用Lubridate,我们可以从路径中日期的月份和年份开始,在每月的第一天形成一个日期。然后,我们可以添加一个月并减去一天,以获得实际月份的最后一天。

代码语言:javascript
复制
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"
票数 1
EN

Stack Overflow用户

发布于 2021-06-29 20:06:23

您可以借助basenamedirname函数来提取月份和年份。我们可以使用as.yearmon来获得所需的输出。

代码语言:javascript
复制
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"
票数 1
EN

Stack Overflow用户

发布于 2021-06-29 16:04:40

试试看

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68174611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档