使用Regex查找重复的事务

时间:2015-07-07 00:16:53

标签: regex r pattern-matching

我对正则表达式相对较新,但需要构建一个查询,搜索时间序列并查找定期交易,每隔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

介于两者之间的数字可以是任何东西。

1 个答案:

答案 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)
}