2013-05-28 20 views
-1

是否有可能在xts中設置秒數?在xts/zoo中設置秒數

2013-01-01 00:01:00 2.2560000 
2013-01-01 00:02:00 2.3883333 
2013-01-01 00:03:00 1.8450000 
2013-01-01 00:04:00 1.6966667 
2013-01-01 00:04:03 1.3100000 
2013-01-01 00:05:00 0.8533333 

我想得到的行沒有:00秒在最後!

2013-01-01 00:04:03 1.3100000 

通常我會用時間子集[T09:00/T09:30]但現在我想沒有與00時間戳秒的線。謝謝!

+2

我沒有downvote,但可以理解爲什麼downvote發生。現在你的問題還不清楚。 'subset seconds'是什麼意思?你有多個問題,而不是一個好的框架**我如何... **問題。也許更好的方法是說這是我擁有的數據(舉例),這就是我希望數據看起來的方式(舉例)。至少收緊問題來表達你的想法。 –

+0

現在你的問題表明你想提取不以00結尾的行,這與你之前的「定時制定時間序列」請求是矛盾的。你要哪個? – GSee

+0

我想看看在沒有以00結尾的行上發生了什麼,但想要在晚些時候提取所有有00的行。 –

回答

1

首先,我必須讓你的示例數據爲R(請使用dput下一次)

lines <- '2013-01-01 00:01:00 2.2560000 
2013-01-01 00:02:00 2.3883333 
2013-01-01 00:03:00 1.8450000 
2013-01-01 00:04:00 1.6966667 
2013-01-01 00:04:03 1.3100000 
2013-01-01 00:05:00 0.8533333' 

tmp <- read.table(text=lines) 
x <- xts(tmp[, 3], as.POSIXct(paste(tmp[, 1], tmp[, 2]))) 

可以使用.indexsec函數提取行,其中第二個是(或不是)0

x[.indexsec(x) == 0] 
#       [,1] 
#2013-01-01 00:01:00 2.2560000 
#2013-01-01 00:02:00 2.3883333 
#2013-01-01 00:03:00 1.8450000 
#2013-01-01 00:04:00 1.6966667 
#2013-01-01 00:05:00 0.8533333 

x[.indexsec(x) != 0] 
#     [,1] 
#2013-01-01 00:04:03 1.31 

另一個想法是使用未導出xts:::startof功能類似於endpoints功能。

x[xts:::startof(x, "mins")] 
#       [,1] 
#2013-01-01 00:01:00 2.2560000 
#2013-01-01 00:02:00 2.3883333 
#2013-01-01 00:03:00 1.8450000 
#2013-01-01 00:04:00 1.6966667 
#2013-01-01 00:05:00 0.8533333 

或者,如果你只有一個沒有在00結束行,你可以使用負子集:

x[-xts:::startof(x, "mins")] 
#     [,1] 
#2013-01-01 00:04:03 1.31 

下面介紹如何用一個零個寬度XTS合併做具有所需索引的對象。

merge(xts(, seq(start(x), end(x), by="min")), x, all=FALSE) 
#       x 
#2013-01-01 00:01:00 2.2560000 
#2013-01-01 00:02:00 2.3883333 
#2013-01-01 00:03:00 1.8450000 
#2013-01-01 00:04:00 1.6966667 
#2013-01-01 00:05:00 0.8533333 
相關問題