从非英文日期中读取缩写的月份形式

7

我有一个包含日期的文本文件,想要将其转换为数据表。

可以使用以下方法转换像03-FEB-2011这样的日期:

data$fecha <- as.Date(data$textDate , "%d-%b-%Y")

问题在于,该列是用西班牙语显示的,因此我看到的是Ene而不是Jan,Ago而不是Aug。 如何更改区域设置才能使%b缩写适用于西班牙语?是否有其他方法可以实现这一点?


我认为你应该执行 Sys.setlocale(locale = "en_US.UTF-8"),当然,你需要使用正确的语言环境,你可以通过 system("locale -a", intern = TRUE) 找到它。如果运行良好,请告诉我。 - SabDeM
在您的情况下,它是“es_ES.UTF-8”。 - SabDeM
如果你收到了“操作系统报告请求将区域设置为“LOCALE”无法被接受”的错误提示,请参考https://askubuntu.com/questions/76013/how-do-i-add-locale-to-ubuntu-server。 - Brandon Bertelsen
2个回答

9

如我之前的评论所述,这里是完整且经过测试的答案。正如我所说,您必须将locale设置为适合您的数据的语言环境(在本例中为西班牙语)。

允许您执行此操作的代码如下:

Sys.setlocale(locale="es_ES.UTF-8")

您可以使用 system("locale -a", intern = TRUE) 命令查看所有可用的 locale 列表(不确定在 Windows 系统上是否有效)。

以下是一个示例:

x <- c("03-Ago-2011", "21-Ene-2012")
as.Date(x, format = "%d-%b-%Y")
[1] "2011-08-03" "2012-01-21"

6
如果您无法向操作系统添加区域设置,
> Sys.setlocale(locale = "es")
[1] ""
Warning message:
In Sys.setlocale(locale = "es") :
OS reports request to set locale to "es" cannot be honored

软件包readr()有指定和创建本地化的方法:

> library(readr) 
> parse_date("31 DICIEMBRE 2011","%d %B %Y",locale=locale("es"))
[1] "2011-12-31"

3
也可以尝试使用 Sys.setlocale(locale = "English") 或者 Sys.setlocale(locale = "C") - G. Grothendieck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接