【问题标题】:Convert range of dates in narrative form to .xts dates将叙述形式的日期范围转换为 .xts 日期
【发布时间】:2021-01-26 20:25:05
【问题描述】:

我有一个字符串“2020 年 4 月 20 日 - 2020 年 4 月 24 日”,想将其转换为两个单独的字符串。这里有两个问题:(1)识别叙述“四月”是第 4 个月,以及(2)这个字符串中有两个不同的日期。

我查看了以下内容以及其他内容,但没有看到我的答案:

[extract dates from date range][1],
[select a range of dates][2],
[convert dates to range][3]

我也研究过“解析”,但这似乎不是答案。

【问题讨论】:

  • 也许您可以将两个字符串拆分并转换为日期。要识别字符串中的两个日期,您可以搜索该字符串。

标签: r xts


【解决方案1】:

这样的东西有用吗?

string <- "April 20, 2020 - April 24, 2020"
dates <- as.Date(strsplit(string, ' - ')[[1]], '%B %d, %Y')
dates
#[1] "2020-04-20" "2020-04-24"

如果您不想记住格式,也可以使用lubridate::mdy

dates <- lubridate::mdy(strsplit(string, ' - ')[[1]])

请注意,这取决于区域设置,您的区域设置应为英语。

【讨论】:

  • 是的,这行得通。谢谢。我不知道“strsplit”,但我有几个问题:我认识单引号中的连字符,但我没有在“strsplit”的描述中看到这里需要什么。另外,我需要帮助来解释带 1 的双括号。
  • 这是strsplit 中的split 部分,意思是我们希望以哪种模式分割我们的字符串。 strsplit 返回一个列表,因此使用 [[1]] 我们将其设为向量。这与使用 unlist 相同,即 unlist(strsplit(string, ' - '))
  • 咖啡在我身上!
【解决方案2】:

我们可以使用anydate

library(anytime)
anydate(strsplit(string, "\\s*-\\s*")[[1]])
#[1] "2020-04-20" "2020-04-24"

【讨论】:

  • 我不知道这个包。我会仔细看看它。谢谢。
猜你喜欢
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多