Il pacchetto data.table
ha anche unique
e duplicated
metodi di essa la propria con alcune funzionalità aggiuntive.
Sia il unique.data.table
ei metodi duplicated.data.table
hanno un by
ulteriore argomento che permette di passare una character
o integer
vettore di nomi di colonna o le loro posizioni rispettivamente
library(data.table)
DT <- data.table(id = c(1,1,1,2,2,2),
val = c(10,20,30,10,20,30))
unique(DT, by = "id")
# id val
# 1: 1 10
# 2: 2 10
duplicated(DT, by = "id")
# [1] FALSE TRUE TRUE FALSE TRUE TRUE
Un'altra importante caratteristica di questi metodi è una performance enorme guadagno per set di dati più grandi
library(microbenchmark)
library(data.table)
set.seed(123)
DF <- as.data.frame(matrix(sample(1e8, 1e5, replace = TRUE), ncol = 10))
DT <- copy(DF)
setDT(DT)
microbenchmark(unique(DF), unique(DT))
# Unit: microseconds
# expr min lq mean median uq max neval cld
# unique(DF) 44708.230 48981.8445 53062.536 51573.276 52844.591 107032.18 100 b
# unique(DT) 746.855 776.6145 2201.657 864.932 919.489 55986.88 100 a
microbenchmark(duplicated(DF), duplicated(DT))
# Unit: microseconds
# expr min lq mean median uq max neval cld
# duplicated(DF) 43786.662 44418.8005 46684.0602 44925.0230 46802.398 109550.170 100 b
# duplicated(DT) 551.982 558.2215 851.0246 639.9795 663.658 5805.243 100 a
fonte
2016-03-17 11:01:33
quale vuoi di più? solo il primo? in altre parole: vuoi mantenere 'google' o' localhost' o 'hughsie'? –
Non ha importanza per questa parte della mia analisi statistica. Sto solo cercando di mettere in relazione il titolo del progetto (prima colonna), il numero di bug (seconda colonna) e il numero di organizzazioni sul progetto (terza colonna). – user1897691
cool. gettare colonne inutili e utilizzare? unico –