我有一个很大的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
函数?
答案 0 :(得分:3)
使用diff
计算差异。不需要apply
或for
。
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)]