我目前正试图遍历我的数据,并且通过确定该值是否落在上分位数之上,我想要对数据进行子集,以便仅选择那些高于上分位数的那些数据。为了证明我的意思: -
vector <- c()
df <- as.integer(read.table(text = " 88 72 92 38 20 16 8 14 8 4 4 8 6 4 6 2 54 272 2 6"))
for(i in 1:length(df)){
current.bin <- i
window.size <- 5
window <- df[current.bin-window.size : current.bin+window.size]
upper.quant <- quantile(window, 0.95)
if(df[current.bin] > upper.quant){
vector[i] <- current.bin
}
}
str(vector)
int [1:18] NA NA 3 4 NA NA NA NA NA NA ...
因此,当我循环时,我希望它查看之前和之后的值(一个5的窗口)并使用它来确定上分位数,然后再决定它当前正在查看的值是否下降高于或高于。之后,我想使用current.bin值,然后使用它来指定我想要提取的行,从另一个数据框中选择数据。但是,当我查看生成的向量时,它比我df中的值的数量少2。我无法弄清楚为什么会这样,有什么想法吗?
另外,我如何使用高于上分位数的值的位置来选择数据?以df为例,我希望它能够实现: -
df <- df["row positions using values in vector", ]