2013-04-23 51 views
2

我有一個時間序列對象,從十月到十二月。下面我向你展示一些它的價值。從時間序列中選擇日期範圍

1995-10-13 04:00:00 460.5 
1995-10-13 05:00:00 549.9 
1995-10-13 06:00:00 648.8 
1995-10-13 07:00:00 684.4 
1995-10-13 08:00:00 652.3 
1995-10-13 09:00:00 629.8 
1995-10-13 10:00:00 582.6 
1995-10-13 11:00:00 565.5 
1995-10-13 12:00:00 543.5 
1995-10-13 13:00:00 542.8 

在此範圍內,我想從10:00 HH選擇間隔每天的15:00 HH,並將其存儲到一個名爲「正午」的價值觀變量。 謝謝!

+1

等一下。您是從單個列向我們展示的數據,還是3列中的數據,然後是小時值? – 2013-04-23 12:49:06

+0

數據是隻有一列的xts對象。 – JPV 2013-04-23 12:55:25

回答

0

你有一個xts對象。該解決方案是,如果你在一個數據幀有你的數據第一次我會做這樣的,使用strptime來提取的時間特徵向量的時間,然後做一些合乎邏輯的子集

df <- read.table(text = "1995-10-13 04:00:00 460.5 
1995-10-13 05:00:00 549.9 
1995-10-13 06:00:00 648.8 
1995-10-13 07:00:00 684.4 
1995-10-13 08:00:00 652.3 
1995-10-13 09:00:00 629.8 
1995-10-13 10:00:00 582.6 
1995-10-13 11:00:00 565.5 
1995-10-13 12:00:00 543.5 
1995-10-13 13:00:00 542.8 
") 
colnames(df) <- c("Day" , "Hour" , "Value") 

hours <- strptime(df$Hour , format = "%H:%M:%S")$hour 
df$Midday <- hours >= 10 & hours <= 15 
df 

      Day  Hour Value Midday 
1 1995-10-13 04:00:00 460.5 FALSE 
2 1995-10-13 05:00:00 549.9 FALSE 
3 1995-10-13 06:00:00 648.8 FALSE 
4 1995-10-13 07:00:00 684.4 FALSE 
5 1995-10-13 08:00:00 652.3 FALSE 
6 1995-10-13 09:00:00 629.8 FALSE 
7 1995-10-13 10:00:00 582.6 TRUE 
8 1995-10-13 11:00:00 565.5 TRUE 
9 1995-10-13 12:00:00 543.5 TRUE 
10 1995-10-13 13:00:00 542.8 TRUE 

使用XTS作爲@geektrader顧名思義就是可能會更好地滿足您的需求,因爲它是爲時間序列分析而構建的。

2

您可以使用xts進行時間序列分析。 xts提供了時間序列數據子集的便捷方法。對於。例如。

txt <- '1995-10-13 04:00:00 460.5 
1995-10-13 05:00:00 549.9 
1995-10-13 06:00:00 648.8 
1995-10-13 07:00:00 684.4 
1995-10-13 08:00:00 652.3 
1995-10-13 09:00:00 629.8 
1995-10-13 10:00:00 582.6 
1995-10-13 11:00:00 565.5 
1995-10-13 12:00:00 543.5 
1995-10-13 13:00:00 542.8' 

DF <- read.table(text = txt, stringsAsFactors = FALSE) 

xts(DF$V3, as.POSIXct(paste(DF$V1, " ", DF$V2))) 
##      [,1] 
## 1995-10-13 04:00:00 460.5 
## 1995-10-13 05:00:00 549.9 
## 1995-10-13 06:00:00 648.8 
## 1995-10-13 07:00:00 684.4 
## 1995-10-13 08:00:00 652.3 
## 1995-10-13 09:00:00 629.8 
## 1995-10-13 10:00:00 582.6 
## 1995-10-13 11:00:00 565.5 
## 1995-10-13 12:00:00 543.5 
## 1995-10-13 13:00:00 542.8 

XTS <- xts(DF$V3, as.POSIXct(paste(DF$V1, " ", DF$V2))) 
XTS 
##      [,1] 
## 1995-10-13 04:00:00 460.5 
## 1995-10-13 05:00:00 549.9 
## 1995-10-13 06:00:00 648.8 
## 1995-10-13 07:00:00 684.4 
## 1995-10-13 08:00:00 652.3 
## 1995-10-13 09:00:00 629.8 
## 1995-10-13 10:00:00 582.6 
## 1995-10-13 11:00:00 565.5 
## 1995-10-13 12:00:00 543.5 
## 1995-10-13 13:00:00 542.8 

XTS["T10:00:00/T15:00:00"] 
##      [,1] 
## 1995-10-13 10:00:00 582.6 
## 1995-10-13 11:00:00 565.5 
## 1995-10-13 12:00:00 543.5 
## 1995-10-13 13:00:00 542.8 
+0

謝謝。 T insdide xts對象的含義是什麼? – JPV 2013-04-23 13:09:50