%b-%Y日期转换可得出NA

时间:2018-11-19 18:29:30

标签: r date as.date

我正在尝试将字符串转换为R中的日期。这些是字符串的示例:

  

“ 1973年8月”“ 1974年8月”“ 1975年8月”“ 1976年8月”“ 1977年8月”

我在与上面类似的日期字符串上运行以下行:

exportsDF$Date <- as.Date(as.character(exportsDF$Date), format = "%b-%Y")

这将返回所有值的NA。我将日期列转换为字符的步骤将返回正确的值。有什么想法为什么as.Date()命令不起作用?数据中没有NA或缺少值。每个值都具有“%b-%Y”格式。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

日期格式也需要一天,因此您可以添加月份中的任意一天。在这里,我选择了第一天:

dates <- c("Aug-1973", "Aug-1974", "Aug-1975", "Aug-1976", "Aug-1977")
res <- as.Date(paste0("01-", dates), format = "%d-%b-%Y")
print(res)
#[1] "1973-08-01" "1974-08-01" "1975-08-01" "1976-08-01" "1977-08-01"

原因是基础Date数据类型是一个整数,用于计算自某个参考日以来的天数。具体来说,是自1970-01-01起的天数。参见?Date

现在可以通过

根据需要显示Date对象res
format(res, "%B-%Y")
#[1] "August-1973" "August-1974" "August-1975" "August-1976" "August-1977"

或类似的

month(res)函数及其表亲也很有帮助。参见?month