【问题标题】:How can I change a series of dates into one date R?如何将一系列日期更改为一个日期 R?
【发布时间】:2019-01-19 20:18:59
【问题描述】:

我有一个民意调查数据框,其中一列的标题为Date.s.administered,并被格式化为一个字符串,其中包含进行民意调查的日期。例如,"January 16-20, 2019""December 1-11, 2018"。整个列如下所示:

[1] "November 3–5, 2018"    "November 1–2, 2018"   
[3] "October 28–30, 2018"   "October 22–28, 2018"  
[5] "October 15–28, 2018"   "October 15–28, 2018"  
[7] "October 25–26, 2018"   "October 18–21, 2018"  
[9] "October 15–21, 2018"   "October 12–18, 2018"  
[11] "October 10–14, 2018"   "October 9–13, 2018"   
[13] "October 9–13, 2018"    "October 8–13, 2018"   
[15] "October 8–11, 2018"    "October 3–9, 2018"    

如何操作此列,使其仅显示系列的最后日期(例如,"March 1-4, 2018" 变为 "March 4, 2018")?

【问题讨论】:

  • 请使用dput() 制作一个易于使用的数据示例。

标签: r dataframe matrix


【解决方案1】:

你可以这样做:

gsub("\\d+–", "", df$Date.s.administered)

示例数据:

df <- data.frame(Date.s.administered = c("November 3–5, 2018", "November 1–2, 2018"))

输出:

[1] "November 5, 2018" "November 2, 2018"

【讨论】:

  • 您是否只是复制并粘贴了 unicode“破折号”,我的正则表达式的工作方式不同,具体取决于我输入“3-5”还是复制您的。你是怎么得到这个角色的?
  • 是的,我不知道它是哪种类型的破折号,我复制粘贴了它。
【解决方案2】:

您可以将lubridate 包与正则表达式结合使用来提取字符串模式,然后转换为标准日期字段。

suppressPackageStartupMessages(library(lubridate))

x <- "March 1-4, 2018"

mdy(gsub("(^.+)(\\s\\d-)(\\d)(,\\s)(\\d{4}$)", '\\1 \\3 \\5', x))
#> [1] "2018-03-04"

【讨论】:

    【解决方案3】:

    使用tidyverse 的方法可能是:

    date %>%
     separate(date, c("date1", "date2"), sep = "–") %>%
     mutate(date = paste(sub("[^[:alpha:]]+", "", date1), date2, sep = " ")) %>%
     select(date)
    
                  date
    1 November 2, 2018
    2 October 28, 2018
    3 October 28, 2018
    

    首先,它根据“-”将“日期”列分为“日期1”和“日期2”。然后,它只保留“日期1”中的字母并将其与“日期2”组合成所需的“日期”列。

    样本数据:

    date <- data.frame(date = c("November 1–2, 2018",
              "October 22–28, 2018",
              "October 15–28, 2018"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2022-11-22
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多