Рассчитать разницу между строками быстрее, чем для цикла?

У меня есть набор данных, который выглядит так:

ID   |   DATE    | SCORE
-------------------------
123  |  1/15/10  |  10
123  |  1/1/10   |  15
124  |  3/5/10   |  20
124  |  1/5/10   |  30
...

Таким образом, чтобы загрузить вышеуказанный фрагмент в виде фрейма данных, код:

id<-c(123,123,124,124)
date<-as.Date(c('2010-01-15','2010-01-01','2010-03-05','2010-01-05'))
score<-c(10,15,20,30)
data<-data.frame(id,date,score)


Я пытаюсь добавить столбец, который вычисляет «дни с момента последней записи для этого идентификатора».

Прямо сейчас я использую цикл FOR, который выглядит примерно так:

data$dayssincelast <- rep(NA, nrow(data))
for(i in 2:nrow(data)) {
  if(data$id[i] == data$id[i-1]) 
    data$dayssincelast[i] <- data$date[i] - data$date[i-1]
}


Есть ли более быстрый способ сделать это? (Я немного посмотрел на APPLY, но не могу найти решение, кроме цикла FOR.)

Заранее спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос