R-通过时间和
目前,我有一个R-通过时间和,r,date,subset,xts,R,Date,Subset,Xts,目前,我有一个xts时间序列,称为Data,它包含一个Date,以及两个值列Value1和Value2,这两个列都是数字。我想从我的代码中得到一个数字作为输出,它是从Value2
xts
时间序列,称为Data
,它包含一个Date
,以及两个值列Value1
和Value2
,这两个列都是数字。我想从我的代码中得到一个数字作为输出,它是从Value2
开始的时间段内Value1
的平均值,并在此特定数据集中向前14个数据点,周
为了获得Value2
的日期,我编写了以下代码
Data[which(Data$Value2 < mean(Data$Value2)),"Date"]
值2的平均值为12.57。因此,所选日期为2009-01-16和2009-02-06,因为此处的值2<平均值(值2)。然后,我想要2009-01-16到2009-01-30以及2009-02-06到2009-02-20期间的平均值1,以矩阵形式,开始日期后跟平均值(Value1)。我不确定这是否正是您想要的。它将计算子集数据中
Value1
的平均值。然而,请注意,在未来不到14天的情况下,您不清楚要做什么。我包括两个版本的my.func
定义,一个将在最终输出中生成NA
s,另一个不会。你可以自己检查一下。另外,如果我正确理解了问题,那么就没有必要在这个任务中使用xts
(因此我在示例中不使用它)
set.seed(99)
数据您想计算原始数据或子集合数据中Value1
的平均值,其中所有Value2
都小于mean(Value2)
?在子集合数据中,XTS对象将日期/时间存储在索引
属性中,并且没有“日期”
列(除非你有意自己创建一个)。请提供一个。对不起,我的意思是索引属性。将立即添加示例
Value1 Value2
1 2009-01-02 22.6500 17
2 2009-01-09 21.4700 56
3 2009-01-16 20.6100 -50
4 2009-01-23 19.6800 13
5 2009-01-30 19.2800 172
6 2009-02-06 20.1300 -120
7 2009-02-13 18.9900 17
set.seed(99)
Data <- data.frame(Date = seq(as.Date("2000-01-01"), as.Date("2000-03-30"), by = 1),
Value1 = rnorm(90),
Value2 = runif(90))
strt <- which(Data$Value2 < mean(Data$Value2))
subData <- Data[which(Data$Value2 < mean(Data$Value2)),]
my.func <- function(x) mean(subData$Value1[x:(x+14)]) #will produce 14 NA
#my.func <- function(x) mean(subData$Value1[x:(x+14)], na.rm = TRUE) #wont produce NA
sapply(seq_along(strt), my.func)