2014-09-10 84 views
1

这是含有某些日期的提取物。将“ambigous”因子转换为Posixct值

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”,我的电脑上使用 “法语” 语言环境...(但也不要似乎明白FEV或JAN(而不是FEB和JAN)

最终?编辑

我找到了一个解决方案,通过使用该功能:

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

我真的不明白为什么,但它似乎是确定。

THKS

+0

你几乎就在那里,只需要在'as.POSIXct(df,format =“%d%b%Y:%H:%M:%S”)中加'format''',否则你就传递'格式'到'tz'参数。或者只是'as.Date(df,“%d%b%Y:%H:%M:%S”)',因为你在白天没有任何实际值 – 2014-09-10 20:12:41

+0

不工作在我的电脑上我得到了不适用不适用不适用。 – 2014-09-10 20:17:30

+0

这很奇怪。你确定你已经添加了'格式'吗?你用'as.Date'尝试过吗? – 2014-09-10 20:21:41

回答

0

你设置你的语言环境,以通用的“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"