将非标准日期格式字符串(“April-20”)转换为日期对象 R

蝴蝶

我有一个格式为 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 语言环境都是英国和英语。

提前致谢。

G.格洛腾迪克

日期必须包含日、月和年这三者。转换为仅需要月份和年份的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章