簡體   English   中英

如何將以下原始數據轉換為Zoo或XTS時間戳?

[英]How do I convert following raw data to zoo or xts timestamp?

我在CSV文件中的原始數據如下所示,即日期時間格式為%Y%m%d,字母“ T”,后跟%H%M%S:

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

如何使第一列成為Zoo或XTS中的時間索引?

給定您的數據為d

> 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時間類:

> 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對象:

> 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

發出警告,因為所有時間點都相同。

正如Josh O'Brien建議的那樣 ,您可以使用read.zoo做到這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提到的相同時間戳問題。

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

請參閱R如何用小數秒格式化POSIXct,以了解為什么小數秒以一種使它們看起來不正確的方式打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM