Articles of data.table

Maneira eficiente de rbind data.frames com diferentes colunas

Eu tenho uma lista de frameworks de dados com diferentes conjuntos de colunas, gostaria de combiná-los por linhas em um quadro de dados. Eu uso o plyr::rbind.fill para fazer isso. Eu estou procurando algo que faria isso de forma mais eficiente. Semelhante à resposta dada aqui require(plyr) set.seed(45) sample.fun <- function() { nam <- sample(LETTERS, […]

.EACHI em data.table?

Não consigo encontrar nenhuma documentação sobre o que exatamente .EACHI faz em data.table . Eu vejo uma breve menção na documentação: A agregação para um subconjunto de grupos conhecidos é particularmente eficiente ao passar esses grupos em i e definindo by=.EACHI . Quando i é um data.table, DT[i,j,by=.EACHI] avalia j para os grupos de DT […]

Por que o rbindlist é “melhor” que o rbind?

Eu estou passando pela documentação do data.table e também notei de algumas das conversas aqui no SO que o rbindlist deveria ser melhor que o rbind . Eu gostaria de saber por que o rbindlist é melhor que o rbind e em quais cenários o rbindlist realmente melhor que o rbind ? Existe alguma vantagem […]

Usando o pacote data.table dentro do meu próprio pacote

Eu estou tentando usar o pacote data.table dentro do meu próprio pacote. MWE é o seguinte: Eu crio uma function, test.fun, que simplesmente cria um pequeno object data.table e, em seguida, sum o agrupamento de colunas “Val” pela coluna “A”. O código é test.fun<-function () { library(data.table) testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25)) setkey(testdata, A) res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"] return(res) } […]

Obtendo os principais valores por grupo

Aqui está um quadro de dados de amostra: d <- data.frame( x = runif(90), grp = gl(3, 30) ) Eu quero o subconjunto de d contendo as linhas com os 5 principais valores de x para cada valor de grp . Usando base-R, minha abordagem seria algo como: ordered <- d[order(d$x, decreasing = TRUE), ] […]

Como excluir uma linha por referência em data.table?

Minha pergunta está relacionada à atribuição por referência versus cópia em data.table . Eu quero saber se é possível excluir linhas por referência, semelhante a DT[ , someCol := NULL] Eu quero saber sobre DT[someRow := NULL, ] Eu acho que há uma boa razão para essa function não existir, então talvez você possa apontar […]

Qual é o propósito de definir uma chave em data.table?

Eu estou usando dados.table e há muitas funções que me exigem para definir uma chave (por exemplo, X[Y] ). Como tal, quero entender o que uma chave faz para definir corretamente as chaves em minhas tabelas de dados. Uma fonte que li foi ?setkey . setkey() classifica um data.table e marca como ordenado. As colunas […]

Maneira mais rápida de replace NAs em um grande data.table

Eu tenho um grande data.table , com muitos valores ausentes espalhados por suas ~ 200k linhas e 200 colunas. Eu gostaria de rewrite esses valores de NA para zeros da forma mais eficiente possível. Eu vejo duas opções: 1: Converta para um data.frame e use algo assim 2: Algum tipo de comando legal sub.tecable data […]

data.table vs dplyr: alguém pode fazer algo bem, o outro não pode ou faz mal?

Visão geral Estou relativamente familiarizado com data.table , não tanto com dplyr . Eu li algumas vinhetas e exemplos do dplyr que surgiram no SO, e até agora minhas conclusões são: data.table e dplyr são comparáveis ​​em velocidade, exceto quando há muitos (isto é,> 10-100K) grupos, e em algumas outras circunstâncias (ver benchmarks abaixo) dplyr […]

Por que o data.table atualiza nomes (DT) por referência, mesmo se eu atribuir a outra variável?

Eu armazenei os nomes de um data.table como um vector : library(data.table) set.seed(42) DT <- data.table(x = runif(100), y = runif(100)) names1 <- names(DT) Tanto quanto eu posso dizer, é um vetor simples personagem de baunilha: str(names1) # chr [1:2] “x” “y” class(names1) # [1] “character” dput(names1) # c(“x”, “y”) No entanto, este não é […]