R读取具有时间戳的CSV文件

时间:2013-04-25 16:33:09

标签: r timestamp

我有一个csvfile,它有一个时间戳列作为字符串

15,1035,4530,3502,2,892,482,0,20060108081608,2,N
15,1034,7828,3501,3,263,256,0,20071124175519,3,N
15,1035,7832,4530,2,1974,1082,0,20071124193818,7,N
15,2346,8381,8155,3,2684,649,0,20080207131002,9,N

我使用read.csv选项,但问题是我完成导入数据列后的样子:

1       15     1035   4530          3502       2        892   482       0 2.006011e+13          2          N
2       15     1034   7828          3501       3        263   256       0 2.007112e+13          3          N
3       15     1035   7832          4530       2       1974  1082       0 2.007112e+13          7          N
4       15     2346   8381          8155       3       2684   649       0 2.008021e+13          9          N

是否可以在读取时从字符串中删除日期(csv文件确实有标题:在此处删除以保持数据匿名)。如果我们不能剥离因为它被读取可以是什么是最好的方式来做剥离?

3 个答案:

答案 0 :(得分:2)

这里有两种方法:

使用zoo包。我个人更喜欢这个。我将您的数据作为时间序列处理。

library(zoo)

read.zoo(text='15,1035,4530,3502,2,892,482,0,20060108081608,2,N
15,1034,7828,3501,3,263,256,0,20071124175519,3,N
15,1035,7832,4530,2,1974,1082,0,20071124193818,7,N
15,2346,8381,8155,3,2684,649,0,20080207131002,9,N',
         index=9,tz='',format='%Y%m%d%H%M%S',sep=',')

                   V1 V2   V3   V4   V5 V6   V7   V8 V10 V11
2006-01-08 08:16:08 15 1035 4530 3502 2   892  482 0  2   N  
2007-11-24 17:55:19 15 1034 7828 3501 3   263  256 0  3   N  
2007-11-24 19:38:18 15 1035 7832 4530 2  1974 1082 0  7   N  
2008-02-07 13:10:02 15 2346 8381 8155 3  2684  649 0  9   N  

colClasses中使用read.table参数,如评论中所述:

dat <- read.table(text='15,1035,4530,3502,2,892,482,0,20060108081608,2,N
15,1034,7828,3501,3,263,256,0,20071124175519,3,N
15,1035,7832,4530,2,1974,1082,0,20071124193818,7,N
15,2346,8381,8155,3,2684,649,0,20080207131002,9,N',
           colClasses=c(rep('numeric',8),
                        'character','numeric','character')
                        ,sep=',')


strptime(dat$V9,'%Y%m%d%H%M%S')

1] "2006-01-08 08:16:08" "2007-11-24 17:55:19" 
  "2007-11-24 19:38:18" "2008-02-07 13:10:02"

答案 1 :(得分:0)

正如里卡多所说,您可以使用read.csv设置列类。在这种情况下,我建议将这些作为字符导入,并在加载csv后,将它们转换为strptime()的日期。

例如:

test <- '20080207131002'
strptime(x = test, format = "%Y%m%d%H%M%S")

将返回带有日期/时间信息的POSIXlt对象。

答案 2 :(得分:0)

您可以使用lubridate包

test <- '20080207131002'
lubridate::as_datetime(test)

还可以根据您的需要指定每种情况的格式