我有一个从10月到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到15:00的间隔,并将其存储到名为“midday”值的变量中。 谢谢!
答案 0 :(得分: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
答案 1 :(得分: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建议可能更适合您的需求,因为它是为时间序列分析而构建的。