在数据框上使用Apply时访问上一行

时间:2019-11-14 04:37:10

标签: r apply

我有一个很大的data.frame,我想对其进行测试,以查看特定列中的每一行是否等于该列中的前一行加上一定的增量。有关列中的数据属于POSIXct类。我正在使用for循环,但这非常慢,因此我想使用apply函数编写代码。这就是我所拥有的

for (i in 2:100) {
     test$test[i] <- test$date[i-1]+0.5*60*60 == test$date[i]
 }

data.frame可能会这样创建

test <- 
    data.frame(date = c(seq(from = Sys.time(), length.out = 100, by = "30 min")), 
               test = c(rep(0,100))
              )

如何将其转换为apply函数?

2 个答案:

答案 0 :(得分:3)

使用diff计算差异。不需要applyfor

test$test = c(NA, as.double(diff(test$date), units = "mins") == 30)

我们可以转换时差单位,因此不需要0.5 * 60 * 60

答案 1 :(得分:1)

您还可以移动行并进行比较

test$test[2:nrow(test)] <- (test$date[1:(nrow(test) - 1)] + 0.5*60*60) == 
                            test$date[2:nrow(test)]