根据时间条件拆分数据

时间:2018-03-05 08:23:36

标签: r dataframe

我有几秒钟的数据行,但是我发现了一些异常。某些行之间的差异是30分钟或更长时间,所以我想在这种情况下将数据拆分为多个其他数据帧,这意味着循环遍历我的数据帧并在时间差超过30分钟时进行拆分。我已经尝试过了,但它将我的数据拆分为一行数据框。

 RBD < - function(x){
    i <- 0
    while(i < length(data$Time)){
        if(data$Time[i+1]-data$Time[i] > 60*30){
            rb <- 1

        }
        else{
            rb<-0
    }
     i <- i+1
    }
}


ListData <- Data %>%
    group_by(Data$temp)%>%
    transmute(ind=all((RBD = 1))%>%
    .$ind
names(ListData) <- paste0(‘Data’, seq_along(ListData))

split(Data, ListData)

我的数据看起来像这样 Data

1 个答案:

答案 0 :(得分:0)

基础R中有一个非常有用的功能:diff,它可以为你做繁重的工作。如果这对您不起作用,请尝试发布reprex,我会看看我是否可以帮您解决问题。

让我们模拟一些数据:

set.seed(123)
x <- sample(1200, 100)
x <- x + sample(c(0, 0, 0, 0, 2400), 100, replace = TRUE)


RBD <- function(x){
    res <- lag(x) > 60*30
    res[1] <- FALSE
    res
}

RBD(x)
# [1]  FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE   
# [13] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
# [25] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
# [37] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
# [49] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [73] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
# [85] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
# [97] FALSE FALSE FALSE FALSE