Jeśli podam n kolumn jako klucz do data.table
, jestem świadomy, że mogę dołączyć do mniejszej liczby kolumn niż zdefiniowane w tym kluczu, o ile dołączę do head
z . Na przykład, dla N = 2:Podział danych na tabelę bez nagłówka (klawisz (DT), m), przy użyciu wyszukiwania binarnego bez skanowania wektorowego
X = data.table(A=rep(1:5, each=2), B=rep(1:2, each=5), key=c('A','B'))
X
A B
1: 1 1
2: 1 1
3: 2 1
4: 2 1
5: 3 1
6: 3 2
7: 4 2
8: 4 2
9: 5 2
10: 5 2
X[J(3)]
A B
1: 3 1
2: 3 2
Tam połączone tylko w pierwszej kolumnie Klucza 2-rdzeniowego DT
. Wiem, że mogę dołączyć do obu kolumnach klucza tak:
X[J(3,1)]
A B
1: 3 1
Ale jak mogę podzbiór używając tylko druga kolumna Columa klucza (np B==2
), ale nadal nie używając wyszukiwania binarny wektor skanować? Zdaję sobie sprawę, że to duplikat:
Subsetting data.table by 2nd column only of a 2 column key, using binary search not vector scan
więc chciałabym generalizować to pytanie n
. Mój zbiór danych ma około miliona wierszy, a rozwiązanie dostarczone w podwójnym pytaniu powiązanym powyżej nie wydaje się optymalne.
To tylko 'X [B ==2,]'. Sugerowane czytanie: http://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.pdf –
@MatthewPlourde, jesteś pewien? Winieta, do której się odwołujesz, ma następujące zdanie, które sprawia, że twoje rozwiązanie brzmi nieoptymalnie: "Używamy klucza, aby wykorzystać fakt, że tabela jest posortowana i użyć wyszukiwania binarnego, aby znaleźć pasujące wiersze. nie użyliśmy ==. " – GSee
@GSee dziękuję, masz absolutną rację. przepraszam, mój błąd. –