У меня есть очень большой набор данных (df
) событий, где каждая строка соответствует измерению, моменту времени (df$TimeSec
) и идентификатору события (df$Source
).
Цикл ниже создает столбец df$TimeDiff
, который вычисляет разницу во времени между текущей отметкой времени строки и следующей. Он также проверяет, изменился ли Source
, поэтому в первой строке нового события значение TimeDiff
равно NA
.
Я пытаюсь переключить свое мышление с цикла на использование векторизации R и надеюсь увеличить скорость обработки.
for(i in 1:nrow(df)){
if(df$Source[i+1] == df$Source[i]){
df$TimeDiff[i+1] <- df$TimeSec[i+1] - df$TimeSec[i]
}else{
df$TimeDiff[i+1] <- NA
}
}
В итоге вышеприведенный цикл делает именно то, что я хочу, но я хочу посмотреть, есть ли лучший способ, который экономит время обработки. Спасибо!