将因子转换为R中的日期时间对象

问题描述:

我想将包含由另一个应用程序由基本Java函数创建的TimeStamps的因子转换为R Datetime对象。我使用德国的Windows Vista。将因子转换为R中的日期时间对象

目前,我试过两行没有成功:

as.POSIXlt(as.character(Time), format="%b %d, %Y %T %r") 
as.POSIXlt(Time, format="%b %d, %Y %T %r") 

我的数据集时的样子:

structure(c(24L, 25L, 28L, 27L, 26L, 1L, 2L, 3L, 4L, 5L, 6L, 
8L, 7L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
20L, 21L, 22L, 23L, 30L, 29L, 42L, 52L, 53L, 54L, 55L, 56L, 31L, 
33L, 32L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 43L, 44L, 45L, 
46L, 47L, 48L, 49L, 50L, 51L), .Label = c("Apr 10, 2011 10:29:46 AM", 
"Apr 11, 2011 8:30:51 AM", "Apr 12, 2011 10:16:07 AM", "Apr 13, 2011 9:45:57 AM", 
"Apr 14, 2011 9:05:56 AM", "Apr 15, 2011 8:30:40 AM", "Apr 16, 2011 11:31:42 AM", 
"Apr 16, 2011 2:24:58 AM", "Apr 17, 2011 1:55:50 AM", "Apr 17, 2011 12:30:23 PM", 
"Apr 18, 2011 11:13:29 AM", "Apr 19, 2011 8:25:42 AM", "Apr 20, 2011 9:41:59 AM", 
"Apr 21, 2011 10:51:01 AM", "Apr 22, 2011 11:01:45 AM", "Apr 23, 2011 11:33:41 AM", 
"Apr 24, 2011 11:36:11 AM", "Apr 25, 2011 1:33:56 PM", "Apr 26, 2011 9:42:21 AM", 
"Apr 27, 2011 9:41:53 AM", "Apr 28, 2011 9:20:51 AM", "Apr 29, 2011 7:51:15 AM", 
"Apr 30, 2011 11:43:58 AM", "Apr 7, 2011 9:48:31 AM", "Apr 8, 2011 9:43:02 AM", 
"Apr 9, 2011 11:28:28 PM", "Apr 9, 2011 11:42:25 AM", "Apr 9, 2011 2:10:59 AM", 
"May 1, 2011 11:58:41 AM", "May 1, 2011 3:33:16 AM", "May 10, 2011 9:31:42 AM", 
"May 11, 2011 7:00:21 PM", "May 11, 2011 9:31:11 AM", "May 12, 2011 9:22:29 AM", 
"May 13, 2011 8:46:17 AM", "May 14, 2011 12:40:50 PM", "May 15, 2011 2:36:01 PM", 
"May 16, 2011 8:53:11 AM", "May 17, 2011 9:53:00 AM", "May 18, 2011 10:20:52 AM", 
"May 19, 2011 9:42:22 AM", "May 2, 2011 8:45:46 AM", "May 20, 2011 1:13:02 PM", 
"May 21, 2011 1:10:48 PM", "May 22, 2011 11:31:44 AM", "May 23, 2011 10:10:04 AM", 
"May 24, 2011 10:11:29 AM", "May 25, 2011 9:30:45 AM", "May 26, 2011 9:30:51 AM", 
"May 27, 2011 9:01:07 AM", "May 28, 2011 11:27:56 AM", "May 3, 2011 8:21:01 AM", 
"May 4, 2011 8:11:23 AM", "May 5, 2011 10:10:55 AM", "May 6, 2011 8:01:03 AM", 
"May 9, 2011 9:13:38 AM"), class = "factor") 

sessionInfo() 
R version 2.10.1 (2009-12-14) 
i386-pc-mingw32 

locale: 
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 
[4] LC_NUMERIC=C     LC_TIME=German_Germany.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_2.10.1 

什么问题?

+0

如果你通过'dput'提供你的数据集,对我们来说会更容易。 – 2011-05-28 19:10:59

+0

@Joshua:我不知道输入。我添加了这种格式的数据。 – Christian 2011-05-28 19:15:13

+0

'sessionInfo()'的输出是什么? – 2011-05-28 19:57:31

我认为%T%r是多余的。试试这个:

as.POSIXlt(as.character(Time), format="%b %d, %Y %r") 

而且(从?strptime)指出,不支持某些格式字符(输出)在Windows上。

+0

当我运行该命令时,它正确填写了前28个数字,但是将NA的最后29-56号填入 – Christian 2011-05-28 19:21:10

+0

嗯,我不确定会导致什么结果。我对答案的第一次尝试充满了错误(其中之一,它没有考虑AM/PM);这个新的工作吗? – 2011-05-28 19:31:17

+0

勉强新的也不起作用。 5月份的所有数据似乎都失败了。 – Christian 2011-05-28 19:32:42