如何在R和lubridate
中转换此日期字符串?
lubridate::as_date('Apr-78', format = '%B-%Y')
如何防止错误invalid 'tz'
?
答案 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月发生某件事。几年和/或几个月,因此将它们变成变量是很有意义的。