我对正则表达式相对较新,但需要构建一个查询,搜索时间序列并查找定期交易,每隔x天重复一次。
x是预定义的
例如:
如果我正在寻找每9天重复一次的模式
data1 <- c(10.10,0,0,0,0,0,0,0,10.10,0,0,0,0,0,0,0,10.10,0,0,0,0,0,0,0,10.10)
输出:10.10
如果我正在寻找每14天重复一次的模式
data1 <- c(2000,0,0,0,9,0,0,10,0,0,9,0,0,0,0,2000,0,0,0,0,0,0,10.10,0,0,0,10.10,0,0,0,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2000)
输出:2000
介于两者之间的数字可以是任何东西。
答案 0 :(得分:1)
interval <- 3
vector <- c(10,1,0,10,0,0,10,0,0,10)
for(i in 1:interval) {
if(sd(vector[seq(i,length(vector),interval)])==0) {
print(vector[i])
}
}
这是一个循环,所以它不是最有效的做事方式。更多的是发现函数,返回值和间隔来获取值,这是一个函数。
vector <- c(10,1,0,10,0,0,10,0,0,10)
matches <- find_patterns(vector,seq(2,3))
find_patterns <- function (vector, intervals) {
matches <- matrix(c(NA, NA), nrow=1, ncol=2)
for(interval in intervals) {
for(i in 1:interval) {
if(sd(vector[seq(i,length(vector),interval)])==0) {
if(is.na(matches[1,1])) {
matches[1,] <- c(vector[i],interval)
} else {
matches <- rbind(matches,c(vector[i],interval))
}
}
}
}
return(matches)
}