【问题标题】:function as.Date just recognizes german month - but not english month功能 as.Date 只识别德国月份 - 但不是英国月份
【发布时间】:2017-06-20 21:21:58
【问题描述】:

我需要在 R 中转换具有例如格式的日期“01OCT2011”。问题是函数 as.Date 只考虑德国月份。这里,我举个例子:

> test <- c("15MAI2006","01OCT2011")
> test1 <- as.Date(test, format='%d%B%Y')
> test1
[1] "2006-05-15" NA 

“MAY”是德语“MAI”。该函数无法获取英文拼写为 OCT 的日期。

【问题讨论】:

  • 虽然看起来像法国人

标签: r date as.date


【解决方案1】:

如果您真的想同时获得英语和德语日期,则需要一次获得一个。

Sys.setlocale("LC_TIME", "de_DE")
test1 <- as.Date(test, format='%d%B%Y')
na.test1 <- is.na(test1)
Sys.setlocale("LC_TIME", "C")
test1[na.test1] <- as.Date(test[na.test1], format='%d%B%Y')

我上面用于德语的语言环境是针对 OSX 的,但您可以在 documentation for Sys.setlocale 找到其他系统的格式

【讨论】:

    【解决方案2】:

    如果您“完全确定”该语言是德语,请尝试以下操作:

    Sys.setlocale("LC_ALL","German")
    
    test <- c("15MAI2006","01OKT2011")
    as.Date(test, format='%d%B%Y')
    
    [1] "2006-05-15" "2011-10-01"
    

    但是,您的原始数据中有“01OCT2011”,十月应该是 Okt

    【讨论】:

    • 不这么认为。这会产生相同的结果: as.Date(c("01Okt2011","01OKT2011", "01okt2011") , format='%d%B%Y')
    • 反之亦然。我的日期是英文的,我也想用英文转换它们。但我认为在我的情况下,R 只考虑德语月份而不是英语月份。这就是为什么我的输出用“MAI”而不是“MAY”确认的原因。与“OCT”相同。我试过 Sys.setlocale("LC_ALL","English")... 但不起作用。
    • 这是合乎逻辑的。我的系统出了点问题,也许我无法得到相同的结果
    • 尝试 sessionInfo() 并确保您的语言是英语。
    • @I.AH 试试Sys.setlocale("LC_TIME", "C")
    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多