Articles of data.table

Valutare sia il nome della colonna che il valore di destinazione all’interno dell’espressione `j` all’interno di` data.table`

Prendere in considerazione target <- "vs" value <- 1 library(data.table) dt <- as.data.table(head(mtcars)) Quindi sto provando a passare sia il nome della colonna sia un valore come variabili nell’espressione j nell’ambiente data.table , qualcosa che sarebbe equivalente a dt[, vs == 1] # [1] FALSE FALSE TRUE TRUE FALSE TRUE Se solo il valore è […]

Individuazione delle sovrapposizioni tra gli intervalli / Connessioni di sovrapposizione efficienti

Panoramica: Devo unirmi a due tabelle: ref contiene gli intervalli di tempo (da t1 a t2 ) insieme a un id per ogni intervallo e uno space cui si verifica questo intervallo. map contiene intervalli di tempo (da t1 a t2 ) ciascuno con un risultato res e il suo space corrispondente. Desidero ottenere / […]

Rolling join su data.table con chiavi duplicate

Sto cercando di capire i rolling joins in data.table . I dati per riprodurre questo è dato alla fine. Dato un data.table delle transazioni in un aeroporto, in un dato momento: > dt t_id airport thisTime 1: 1 a 5.1 2: 3 a 5.1 3: 2 a 6.2 (nota che t_ids 1 & 3 hanno […]

Come estrarre le prime n righe per gruppo?

Ho un data.table dt . Questo data.table è ordinato prima per date colonna (la mia variabile di raggruppamento), poi per age colonna: library(data.table) setkeyv(dt, c(“date”, “age”)) # Sorts table first by column “date” then by “age” > dt date age name 1: 2000-01-01 3 Andrew 2: 2000-01-01 4 Ben 3: 2000-01-01 5 Charlie 4: 2000-01-02 […]

Filtraggio di righe duplicate / non univoche in data.table

Ho una tabella data.table con circa 2,5 milioni di righe. Ci sono due colonne. Voglio rimuovere tutte le righe che sono duplicate in entrambe le colonne. Precedentemente per un data.frame avrei fatto questo: df -> unique(df[,c(‘V1’, ‘V2’)]) ma questo non funziona con data.table. Ho provato unique(df[,c(V1,V2), with=FALSE]) ma sembra funzionare ancora solo sulla chiave del […]

Quando dovrei usare l’operatore: = in data.table?

data.table oggetti data.table ora hanno un operatore: =. Cosa rende questo operatore diverso da tutti gli altri operatori di assegnazione? Inoltre, quali sono i suoi usi, quanto è più veloce e quando dovrebbe essere evitato?

Utilizzare un valore dalla riga precedente in un calcolo R data.table

Voglio creare una nuova colonna in un data.table calcolato dal valore corrente di una colonna e la precedente di un’altra. È ansible accedere alle righe precedenti? Per esempio: > DT DT ABC 1: 1 10 100 2: 2 20 200 3: 3 30 300 4: 4 40 400 5: 5 50 500 > DT[, D […]

Operatore == incoerente nelle colonne logiche in data.table

Si prega di vedere il seguente esempio riproducibile: library(data.table) set.seed(123) DT <- data.table(A=rep(0.3,10000)) DT[, B := runif(.N) < A] DT[B == T, .N] # [1] 3005 DT[, summary(B)] # Mode FALSE TRUE NA's # logical 6995 3005 0 Tutto sembra a posto e il conteggio dei valori “VERO” è lo stesso per i 2 metodi. […]

data.table join poi aggiunge colonne a data.frame esistente senza ricopiare

Ho due data.tables , X (3m righe per ~ 500 colonne) e Y (100 righe per due colonne). set.seed(1) X <- data.table( a=letters, b=letters, c=letters, g=sample(c(1:5,7),length(letters),replace=TRUE), key="g" ) Y <- data.table( z=runif(6), g=1:6, key="g" ) Voglio fare un join esterno sinistro su X, che posso fare con Y[X] grazie a: Perché X [Y] join di […]

Modo più veloce per leggere i file a larghezza fissa

Io lavoro con un sacco di file a larghezza fissa (cioè senza caratteri di separazione) che ho bisogno di leggere in R. Quindi, di solito c’è una definizione della larghezza della colonna per analizzare la stringa in variabili. Posso usare read.fwf per leggere i dati senza problemi. Tuttavia, per file di grandi dimensioni, questo può […]