【问题标题】:How to read "14-OCT-2016" or "%dd-%mon-%YYYY" with zoo? r / zoo/ xts如何用动物园阅读“14-OCT-2016”或“%dd-%mon-%YYYY”? r /动物园/ xts
【发布时间】:2017-02-23 15:16:32
【问题描述】:

标题是不言自明的。我有一个df,第一列是"14-OCT-2016",一直向下运行。我需要把这个df 读成.xts

我看了:

df$NAV.Date <- as.Date(df$NAV.Date, "%Y %b %d" )  # this replaces all values with NA

df$NAV.Date <- strftime(test$NAV.Date, format="%Y %b %d" )

对于我得到的最后一个:

Error in as.POSIXlt.character(as.character(x), ...) : 
  character string is not in a standard unambiguous format

提前致谢。

【问题讨论】:

    标签: r date time-series xts zoo


    【解决方案1】:

    这是一个系统语言环境问题(很可能)。解决方法如下:

    test<-"14-OCT-2016"
    lct<-Sys.getlocale("LC_TIME")
    Sys.setlocale("LC_TIME","C") #moves you to the right locale
    date<-as.Date(test, "%d-%b-%Y")
    print(date)
    Sys.setlocale("LC_TIME",lct) #moves you back again
    

    希望对你有所帮助:D

    对于第二个问题,你必须改用lubridate

    library(lubridate)
    parse_date_time("12-OCT-2015", tz="UTC", c("dbY", "dby"), locale = "C")
    parse_date_time("12-OCT-15", tz="UTC", c("dbY", "dby"), locale = "C")
    

    【讨论】:

    • 感谢您的帮助。我的问题部分解决了。我现在似乎有一个不好的条目。我只能假设输入为“16-Feb-15”而不是“16-FEB-2015”的数据集更多(我有 5m 行)。对于该特定行,我在使用您的代码时得到“0015-02-16”。是否可以对此进行调整?
    • @AlexBădoi 查看更新的答案。那可以同时处理。您需要相应地调整时区参数tz。在示例中,我将其设置为“UTC”
    【解决方案2】:

    一行解决方案如下,借助包anytime

    test <- "14-OCT-2016"
    date <- anytime::anydate(test)
    #[1] "2016-10-14"
    

    第二个问题可以用lubridate解决:

    test2 <- "16-Feb-15"
    date2 <- lubridate::dmy(test2)
    #[1] "2015-02-16"
    

    【讨论】:

    • 一切正常。然而,似乎我在其中一个数据集中有一个波段条目,它输入为“15 年 2 月 16 日”而不是“2015 年 2 月 16 日”也可以“随时”涵盖这一点吗?目前此单元格保留为空白
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2016-06-14
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多