Podczas korzystania z pakietu data.table
, nie jestem pewien, kiedy muszę setkey()
. Na przykład, używając operatora :=
z opcją by
, rzeczy wydają się nadal bardzo szybkie, mimo że nie ustawiłem klucza. Czy ktoś może wyjaśnić, kiedy setkey()
jest konieczne, a kiedy nie jest? A jeśli nie jest to konieczne przed wywołaniem :=
z by
, to jak jest tak szybko, ponieważ pakiet data.table
jest tak szybki, ponieważ prawdopodobnie musi zrobić to samo co apply
w standardzie data.frame
R, wykonując wyszukiwanie sekwencyjne, a nie binarne, ponieważ nie wiem, czy mój data.table
jest rzeczywiście posortowany według argumentu do by
.setkey i: = operator, data.table, R
Dzięki
fantastyczne, dziękuję! przeszukiwał FAQ i musiał tego nie zauważyć. – Alex
Czy "ad hoc by" jest szybkie, ponieważ używa sortowania radix? – colinfang
@colinfang Trudno odpowiedzieć na to pytanie, ponieważ wchodzi w to kilka funkcji. Przyczyny różnią się w zależności od zapytania i danych. Ad hoc 'by' używa sortowania radix do znalezienia grup dla kolumn całkowitych, więc zależy to od typu i liczby kolumn" po "-ed. Po znalezieniu grup, jedna grupa przyczyn jest szybka, ponieważ pamięć jest przydzielana dla największej grupy raz z góry, która jest następnie ponownie wykorzystywana dla wszystkich grup. I tylko dla kolumn wymaganych przez 'j'. Zobacz FAQ 3.1. Spróbuj trybu 'verbose = TRUE', ponieważ pokazuje, ile czasu poświęcamy na znajdowanie grup (sortowanie radix) i ich powtarzanie. –