R:将月份和2位数的年份转换为日期

时间:2019-09-13 14:40:36

标签: r lubridate

如何在R和lubridate中转换此日期字符串?

lubridate::as_date('Apr-78', format = '%B-%Y')

如何防止错误invalid 'tz'

2 个答案:

答案 0 :(得分:2)

lubridate::parse_date_time("Apr-78", 'my')

答案 1 :(得分:0)

其他人已经提到您的format不太正确,所以请当心。就时区而言:我首先想到的是,您只需要添加tz = "UTC"(或其他时区),但是您的日期没有日期信息这一事实是更大的问题。如果您未解决此问题,则通过tz添加时区将仅产生NA。有两种简单的方法可以解决这个问题。您可以在日期上随意paste任意一天,但是可以使用readr::parse_date来简化事情,该日期默认为每月的第一天。然后,您可以从结果日期中提取月份和年份,然后删除日期,例如:

library(tidyverse)
library(lubridate)

parse_date("Apr-78", "%b-%y") %>% 
    tibble(date = ., year = year(date), month = month(date)) %>% 
    select(-date)

这将为您提供年份和月份的两个变量:

# A tibble: 1 x 2
   year month
  <dbl> <dbl>
1  1978     4

您也可以保留日期而不是提取日期和月份,但这可能会造成混乱-例如,有人可能会在1978年4月1日而不是1978年4月发生某件事。几年和/或几个月,因此将它们变成变量是很有意义的。

相关问题