这是一个带有一些日期的摘录。
df<-structure(c(2L, 3L, 1L, 4L, 5L), .Label = c("05JUL2014:00:00:00",
"07FEB2014:00:00:00", "10JUL2012:00:00:00", "19APR1998:00:00:00",
"22DEC2010:00:00:00"), class = "factor")
我想将其转换为Date或Posixct。
我试过这个:
as.POSIXct(df,"%d%b%Y:%H:%M:%S")
但它似乎不是一个好的解决方案。任何人都可以告诉我我的错误吗?
编辑:我也试过了:
as.POSIXct(df, format = "%d%b%Y:%H:%M:%S")
但我获得了
NA NA NA NA
重新编辑:
as.POSIXct("07FEB2014:00:00:00", format = "%d%b%Y:%H:%M:%S")
返回
NA
但
as.POSIXct("072014:00:00:00", format = "%d%Y:%H:%M:%S")
返回
"2014-09-07 CEST"
%b似乎不理解“FEB”,我的电脑使用“法语”Locale ...(但它似乎也不了解FEV或JAN(而不是FEB和JAN)
最后?修改
我通过使用此功能找到了解决方案:
Sys.setlocale("LC_TIME", "C")
我真的不明白为什么,但似乎没问题。
THKS
答案 0 :(得分:0)
您正在将LOCALE环境设置为通用“C”,这可能默认为英语月份:
在使用strptime或as.POSIXct之前需要转换为章程:
dfc <- as.character(df)
as.POSIXct(dfc, format="%d%B%Y:%H:%M:%S")
[1] "2014-02-07 PST" "2012-07-10 PDT" "2014-07-05 PDT" "1998-04-19 PDT"
[5] "2010-12-22 PST"
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"