【问题标题】:Replacing character dates with Date values用日期值替换字符日期
【发布时间】:2021-11-20 17:40:03
【问题描述】:

我有一些数据,其中最后一列有日期(从最初存储它们的文件名中提取),并且出于所有意图和目的看起来像这样:

Person <- c("Person A", "Person B", "Person C", "Person A", "Person B", "Person C")
School <- c("School A", "School B", "School C", "School D", "School E", "School F" )
Date <- c("Aug 2019", "Oct 2019","Sep 2019","Nov 2019","Dec 2019","Jul 2019")
df <- data.frame(Person, School, Date)

日期来自文件名,我将文件名添加为列,然后使用以下内容提取日期值,如上例所示。

mutate(Date = substr(File, 44, 51))

从这一点开始,我需要将其从字符“2019 年 8 月”转换为任何格式的日期,这样我就可以创建一些时间序列,无论如何我只会在 X 轴上使用月/日,并且没有天数据中指定的,都是月/年。

当我使用它解析它时,我可以看到 R 将它识别为日期

parse_date_time(data3$Date, orders = c("bY"))

它给出了结果

> parse_date_time(df$Date, orders = c("bY"))
[1] "2019-08-01 UTC" "2019-10-01 UTC" "2019-09-01 UTC" "2019-11-01 UTC" "2019-12-01 UTC" "2019-07-01 UTC"

不幸的是,我在将这些放入 R 中的表格时画了一个空白,我得到的最远的是以下,mutate 行是我用来从文件名中提取日期的行。

df2 <- head(df, 4) %>% 
  mutate(Date = substr(Date, 10, 18)) %>% 
  replace(df2$Date,  parse_date_time(df2$Date, orders = c("bY")))

但是它正在创建新列而不是替换右列中的日期。我也尝试使用 mutate 而不是 replace ,但这似乎没有任何作用。

感谢您对此提出的任何建议。

【问题讨论】:

    标签: r date


    【解决方案1】:

    不需要replace,即在substr 之后,只需将parse_date_time 包裹在mutate 中即可转换列

    library(dplyr)
    library(lubridate)
    df2 <- df %>%
       mutate(Date = parse_date_time(substr(Date, 10, 18), orders = c("bY")))
    

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多