3

我有一个 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 文件确实有标题:在此处删除以保持数据匿名)。如果我们不能在读取时剥离,那么最好的剥离方法是什么?

4

3 回答 3

2

这里有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参数 in 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"
于 2013-04-25T16:51:12.777 回答
0

正如里卡多所说,您可以使用read.csv. 在这种情况下,我建议将这些作为字符导入,一旦加载了 csv,将它们转换为带有strptime().

例如:

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

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

于 2013-04-25T16:54:47.053 回答
0

您可以使用 lubridate 包

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

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

于 2018-06-14T17:30:49.267 回答