【问题标题】:Convert Monthly Dates in R [duplicate]在R中转换每月日期[重复]
【发布时间】:2019-09-04 00:34:45
【问题描述】:

我有两个不同日期格式的不同数据框

date1<-c('2001-01-30', '2001-02-25')

data2 <- c('200101','200102')

我想将这些日期转换为相同的格式,以便按日期合并两个不同的数据框。

频率为每月一次。

有人可以帮我完成这项任务吗?

【问题讨论】:

  • 只需拆分它们并重新组合。
  • 这是一个常见问题解答。月份和年份的组合不是日期,它缺少一天。您可以添加(任意)日期,例如“01”并从那里继续。
  • '2001-02-31' 是哪一天?
  • @RonakShah 2001 年,第二个月,第 31 天 --- 好吧,这不是一个真实的日期,但我的意思是格式

标签: r date type-conversion data-conversion


【解决方案1】:

EDIT(Caution):这不是最佳实践,建议使用标准解析器。但是,可能会出现不同的要求,因此这个答案只是显示了如何在 OP 和 OP 的评论中获得预期的格式。

我们可以使用:

paste0(substring(data2,nchar(data2)-1,nchar(data2)),"/",substring(data2,1,4))
#[1] "01/2001" "02/2001"

反过来:

paste0(substring(data2,1,4),"-",substring(data2,nchar(data2)-1,nchar(data2)))
[1] "2001-01" "2001-02

【讨论】:

  • 你永远不应该在日期上使用正则表达式。自定义日期解析器知道 2 月 30 日和 5 月 32 日以及第 14 个月不存在,您的正则表达式永远不会存在。
  • 感谢您的信息,不知道。 @Dirk Eddelbuettel 您能否进一步详细说明 2 月 30 日和 5 月 32 日的部分?
  • 如果我想要这种格式2001-01 怎么办?
  • @msh885 paste0(substring(data2,1,4),"-",substring(data2,nchar(data2)-1,nchar(data2)))。然而,也许使用标准解析器会更好。我只是在回答这个问题。
猜你喜欢
  • 2022-08-09
  • 1970-01-01
  • 2014-12-29
  • 2023-04-08
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多