不能正确使用 zoo 的 as.yearmon,转换后的列显示年份为 0086 而不是 1986

Can't use zoo's as.yearmon properly, the transformed column has years showing up like 0086 instead of 1986

您好,感谢您的光临。

我正在尝试使用 as.yearmon 转换日期,但我得到的结果很奇怪,我不知道如何解决这个问题;我尝试在此处和官方包装指南上进行搜索,但没有找到遇到同样问题的人。 问题是我用 as.yearmon 转换了格式为“month/year”的数据集的一列,但结果不正确。

例如原DF列的前3个值为:"1/86"、"2/86"、"3/86"。

使用此函数转换后:

library(zoo)
Dates <- Returns
Dates$Month<- zoo::as.yearmon(Dates$Month, "%m / %Y")

[其中“Returns”是原始数据框,日期是修改后的新数据框。]

我得到的结果不是:“gen 1986”、“feb 1986”、“mar 1986”而是“gen 0086”、“feb 0086”、“mar 0086”,我不知道为什么。

[我不应该说“gen”、“feb”、“mar”是意大利语;我不知道这是否重要,我不知道如何将其更改为“Jan”、“Feb”、“Mar”,我想我也必须这样做]

在此先感谢您的帮助,如果有什么不清楚的地方请告诉我;我还是菜鸟

您需要使用“%m/%y”而不是“%m/%Y”。您的日期没有完整的年份符号。

x <- c("1/86", "2/86", "3/86")

zoo::as.yearmon(x, "%m/%y")
[1] "jan 1986" "feb 1986" "mrt 1986"

日期函数 return 本地语言环境中的名称。如果你想要英文版:

Sys.setlocale("LC_TIME", "English")

zoo::as.yearmon(x, "%m/%y")
[1] "Jan 1986" "Feb 1986" "Mar 1986"

每次您重新启动 R 时,这将被设置回您的语言环境。

更多信息here on SO