Dopo aver creato una chiave su data.table:data.table "indici chiave" o "contatore gruppo"
set.seed(12345)
DT <- data.table(x = sample(LETTERS[1:3], 10, replace = TRUE),
y = sample(LETTERS[1:3], 10, replace = TRUE))
setkey(DT, x, y)
DT
# x y
# [1,] A B
# [2,] A B
# [3,] B B
# [4,] B B
# [5,] C A
# [6,] C A
# [7,] C A
# [8,] C A
# [9,] C C
# [10,] C C
mi vorrebbe ottenere un vettore intero che per ogni riga corrispondente "indice chiave" . Spero che i risultati attesi (colonna i
) qui di seguito vi aiuterà a chiarire cosa intendo:
# x y i
# [1,] A B 1
# [2,] A B 1
# [3,] B B 2
# [4,] B B 2
# [5,] C A 3
# [6,] C A 3
# [7,] C A 3
# [8,] C A 3
# [9,] C C 4
# [10,] C C 4
Avevo pensato di usare qualcosa come cumsum(!duplicated(DT[, key(DT), with = FALSE]))
ma spero ci sia una soluzione migliore. Sento che questo vettore potrebbe essere parte della rappresentazione interna del tavolo e forse c'è un modo per accedervi? Anche se non fosse così, cosa suggeriresti?
Penso che ".GRP" sia un'ottima idea e lo abbia desiderato in passato. Soluzione piacevole e apparentemente ottimale, a proposito. –
@ JoshO'Brien Ok, '.GRP' ora in 1.8.3. –
Come si trova la documentazione su queste e altre variabili come '.SDcols'? ??.. .GRP' ecc. –