我有一个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文件确实有标题:在此处删除以保持数据匿名)。如果我们不能剥离因为它被读取可以是什么是最好的方式来做剥离?
答案 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)
还可以根据您的需要指定每种情况的格式