In r utilizzando data.table, come fa un sottoinsieme o una domanda quando il campo criteri è un numero intero?

StackOverflow https://stackoverflow.com/questions/8917971

  •  30-10-2019
  •  | 
  •  

Domanda

Sto usando un po 'di pacchetto dati. Esistono molti esempi di sottoinsieme o interrogazione o ricerca (o come vuoi chiamarlo) con una ricerca binaria che è apparentemente molto più veloce di una scansione vettoriale. Ecco un estratto dal file di aiuto.

DT["a"]                    # binary search (fast)
DT[x=="a"]                 # vector scan (slow)

Ma cosa succede se le colonne su cui si desidera cercare non è un fattore (o carattere) ma piuttosto è un numero intero.

cpt <- c(23456,23456,10000,44555,44555)
description <- c("tonsillectomy","tonsillectomy in >12 year old","brain transplant","castration","orchidectomy")
cpt.desc <- data.table(cpt,description)

setkey(cpt.desc,cpt)
cpt.desc[10000,]  

Ciò non funziona perché l'intero 10000 è interpretato come la 100a riga che in questi dati. Tabella non esiste.

Se modifichiamo la sintassi, otteniamo ciò che stiamo cercando.

cpt.desc[cpt==10000,]

Tuttavia, sembra molto come se fosse il metodo di scansione vettoriale lento. Esiste una funzione di ricerca binaria per i numeri interi nel pacchetto Data.Table? Ringraziandoti in previsione del tuo aiuto.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top