Questo è l'aspetto del mio dataframe. La colonna più a destra ("TimeForLevelChange") è la colonna desiderata. Quando un livello cambia per un determinato Nome, voglio prendere la data minima dal livello precedente e prendere la data dalla riga in cui avviene il cambio di livello e calcolare la differenza. Così il terza fila, il livello di John cambiato 1-2 e ha passato 16 giorni (2016-01-17 - 2016/01/01) nel livello 1 prima di passare al livello 2.Calcolo del tempo trascorso in un dato livello quando quel livello cambia
library(data.table)
dt <- fread('
Name Level Date RecentLevelChange TimeForLevelChange
John 1 2016-01-01 NA NA
John 1 2016-01-10 NA NA
John 2 2016-01-17 1->2 16
John 2 2016-01-18 NA NA
John 3 2016-01-22 2->3 5
John 4 2016-01-26 3->4 4
John 4 2016-01-27 NA NA
John 7 2016-01-29 4->7 3
Tom 1 2016-01-10 NA NA
Tom 2 2016-01-17 1->2 7
Tom 2 2016-01-18 NA NA
Tom 3 2016-01-22 2->3 5
Tom 4 2016-01-26 3->4 4
Tom 4 2016-01-27 NA NA
Tom 7 2016-01-29 4->7 3
')
dt[, Date := as.IDate(Date)]
posso usare lo spostamento funzione in data.table ma non so come definire la data minima dal livello precedente per un determinato nome.