我有一个格式为 month_name-2_digit_year 的日期字符串向量,即
a = rbind("April-21", "March-21", "February-21", "January-21")
我正在尝试将该向量转换为日期对象的向量。我知道这个问题与此非常相似:Convert non-standard date format to date in R几年前发布,但不幸的是,它没有回答我的问题。
我尝试了以下 as.Date() 调用来执行此操作,但它只返回 NA 的向量。IE
b = as.Date(a, format = "%B-%y")
b = as.Date(a, format = "%B%y")
b = as.Date(a, "%B-%y")
b = as.Date(a, "%B%y")
我还尝试使用 openxlsx 包中的 convertToDate 函数来做到这一点:
b = convertToDate(a, format = "%B-%y")
我也尝试了以上所有方法,但使用的是单个字符串而不是向量,但这产生了同样的问题。
我有点不明白为什么这不起作用,因为这种格式在我的脚本早期反向工作(也就是说,我已经有一个 dd-mm-yyyy 格式的日期对象并将其转换为 month_name-yy使用 %B-%y)。当字符串是非标准(除 dd-mm-yyy 或 mm-dd-yy 之外的任何其他内容,如果您在美国)日期格式时,是否有另一种方法可以从字符串到日期?
根据记录,我的 R 语言环境都是英国和英语。
提前致谢。
日期必须包含日、月和年这三者。转换为仅需要月份和年份的 yearmon 类,然后转换为 Date,如下面的 (1) 和 (2) 或添加日期,如 (3)。
(1) 和 (3) 给出月初,(2) 给出月底。
(3) 仅使用来自基础 R 的函数。
还要考虑根本不转换为 Date 而是只使用 yearmon 对象,因为它们直接代表输入所代表的年份和月份。
library(zoo)
# test input
a <- c("April-21", "March-21", "February-21", "January-21")
# 1
as.Date(as.yearmon(a, "%B-%y"))
## [1] "2021-04-01" "2021-03-01" "2021-02-01" "2021-01-01"
# 2
as.Date(as.yearmon(a, "%B-%y"), frac = 1)
## [1] "2021-04-30" "2021-03-31" "2021-02-28" "2021-01-31"
# 3
as.Date(paste(1, a), "%d %B-%y")
## [1] "2021-04-01" "2021-03-01" "2021-02-01" "2021-01-01"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句