R Language Identificazione e raggruppamento per esecuzioni in data.table


Esempio

Il pacchetto data.table offre un modo conveniente per raggruppare mediante le esecuzioni nei dati. Considera i seguenti dati di esempio:

library(data.table)
(DT <- data.table(x = c(1, 1, 2, 2, 2, 1), y = 1:6))
#    x y
# 1: 1 1
# 2: 1 2
# 3: 2 3
# 4: 2 4
# 5: 2 5
# 6: 1 6

La variabile x ha tre esecuzioni: una corsa di lunghezza 2 con valore 1, una corsa di lunghezza 3 con valore 2 e una corsa di lunghezza 1 con valore 1. Potremmo voler calcolare il valore medio della variabile y in ognuna delle corse di variabile x (questi valori medi sono 1.5, 4 e 6).

La funzione rleid rleid fornisce un id che indica l'id di esecuzione di ciascun elemento di un vettore:

rleid(DT$x)
# [1] 1 1 2 2 2 3

Si può quindi facilmente raggruppare su questo ID di esecuzione e riepilogare i dati y :

DT[,mean(y),by=.(x, rleid(x))]
#    x rleid  V1
# 1: 1     1 1.5
# 2: 2     2 4.0
# 3: 1     3 6.0