2016-01-04 75 views
1

我在CSV文件的原始數據看起來像這樣,即,日期 - 時間格式是%Y%米%d,字母 「T」,隨後%H%M%S:如何將以下原始數據轉換爲動物園或xts時間戳?

20151230T090029, 33.04 
20151230T090029, 33.06 
20151230T090029, 33.07 
20151230T090029, 33.05 
20151230T090029, 33.04 
20151230T090029, 33.05 
20151230T090029, 33.04 

我怎樣才能使第一列成爲動物園或xts中的時間索引?

+0

逗號後面是什麼? – Nancy

+0

也許使用'read.zoo()',將'format ='參數設置爲'format =「%Y%m%dT%H%M%S」'。 –

+0

請注意,動物園不支持具有多個相同索引的系列。 –

回答

2

由於Josh O'Brien suggested,你可以用read.zoo做到這一點:

library(zoo) 
Lines <- "20151230T090029, 33.04 
20151230T090029, 33.06 
20151230T090029, 33.07 
20151230T090029, 33.05 
20151230T090029, 33.04 
20151230T090029, 33.05 
20151230T090029, 33.04" 
z <- read.zoo(text=Lines, sep=",", FUN=as.POSIXct, format="%Y%m%dT%H%M%S") 

然後,你可以通過轉換爲XTS和使用xts::make.index.unique處理相同的時間戳問題Gabor mentioned

library(xts) 
x <- as.xts(z) 
options(digits.secs=3) 
(u <- make.index.unique(x, 0.001)) 
#       [,1] 
# 2015-12-30 09:00:29.000 33.04 
# 2015-12-30 09:00:29.000 33.06 
# 2015-12-30 09:00:29.001 33.07 
# 2015-12-30 09:00:29.002 33.05 
# 2015-12-30 09:00:29.003 33.04 
# 2015-12-30 09:00:29.004 33.05 
# 2015-12-30 09:00:29.005 33.04 

爲見How R formats POSIXct with fractional seconds爲什麼小數秒打印的方式,使他們看起來不正確。

2

鑑於你的數據d

> as.POSIXct(d$V1,format="%Y%m%dT%H%M%S") 
[1] "2015-12-30 09:00:29 GMT" "2015-12-30 09:00:29 GMT" 
[3] "2015-12-30 09:00:29 GMT" "2015-12-30 09:00:29 GMT" 
[5] "2015-12-30 09:00:29 GMT" "2015-12-30 09:00:29 GMT" 
[7] "2015-12-30 09:00:29 GMT" 

而一個zoo對象構造:

> d 
       V1 V2 
1 20151230T090029 33.04 
2 20151230T090029 33.06 
3 20151230T090029 33.07 
4 20151230T090029 33.05 
5 20151230T090029 33.04 
6 20151230T090029 33.05 
7 20151230T090029 33.04 

然後轉換爲POSIX時間類,可以使用在註釋中給出的格式字符串完成

> zoo(d$V2, as.POSIXct(d$V1,format="%Y%m%dT%H%M%S")) 
2015-12-30 09:00:29 2015-12-30 09:00:29 2015-12-30 09:00:29 2015-12-30 09:00:29 
       33.04    33.06    33.07    33.05 
2015-12-30 09:00:29 2015-12-30 09:00:29 2015-12-30 09:00:29 
       33.04    33.05    33.04 
Warning message: 
In zoo(d$V2, as.POSIXct(d$V1, format = "%Y%m%dT%H%M%S")) : 
    some methods for 「zoo」 objects do not work if the index entries in ‘order.by’ are not unique 

帶有該警告,因爲所有的時間點ts是一樣的。

相關問題