2015-04-28 11 views
5

Sono presenti dati su un insieme di eventi che si verificano in qualche ordine. Vorrei una colonna che enumera quell'insieme di eventi: questa riga è la prima volta, questa riga è la seconda volta, ecc I dati saranno simile al seguente:Creazione di una colonna per enumerare una serie di eventi

S Time 
A  3 
A  4 
A  5 
A  10 
B  4 
B  9 
B  1 
B  37 

Dove S è una sorta di ID di sessione e il tempo è ovviamente il tempo. Vorrei la seguente colonna risultato ha aggiunto:

S Time Order 
A  3  1 
A  5  3 
A  4  2 
A  10  4 
B  4  2 
B  9  3 
B  1  1 
B  37  4 

Per ciascuno degli ID di sessione, voglio avere una colonna che dà un ordinamento sulle file in base al tempo. Sto usando dplyr e spero in un modo conciso dplyr per farlo.

risposta

7

Prova

library(dplyr) 
df1 %>% 
     group_by(S) %>% 
     mutate(Order=rank(Time)) 
5

Si potrebbe anche fare:

df %>% group_by(S) %>% mutate(Order = row_number(Time)) 

Nel pacchetto dplyr, row_number() è equivalente a rank(ties.method = "first")

Problemi correlati