[R-br] Como trabalhar com uma base de dados muito grande
Benilton Carvalho
beniltoncarvalho em gmail.com
Segunda Julho 4 08:27:58 BRT 2011
Carlos,
ando meio enrolado para ver com detalhes o que pode estar
acontecendo... e, alem disso, nao consigo usar o odbcConnectAccess
(pode ser que seja especifico de plataforma - mas isso eh o minimo,
nao fui procurar detalhes).
A minha impressao eh que o problema q vc tem eh exatamente por conta
de rep(valor, ponderador)... entao, uma ideia a se tentar e' calcular
os quantis sem precisar do rep... veja o codigo anexo (note q uso
Hmisc, vc nao precisa fazer isso, continue da forma q ja esta fazendo,
desde q o meu 'tmp' corresponda a sua tabela com todos os dados):
## INICIO
library(Hmisc)
tmp <- mdb.get('bd1_Teste.mdb', 'Plan1', fileEncoding='latin1',
encoding='latin1')
names(tmp) <- c('codigo', 'valor', 'ponderador', 'cad')
equantileByCounts <- function(x, counts, qs){
tot <- sum(counts)
i <- order(x)
x <- x[i]
counts <- counts[i]
partial <- cumsum(counts)
qsObs <- qs*tot
start <- floor(qsObs)
end <- ceiling(qsObs)
i <- length(qs)
res <- sapply(1:i,
function(.x, start, end, x){
coord <- c(start[.x], end[.x])
bins <- c(1, partial)
grps <- cut(coord, bins, labels=FALSE, include.lowest=T)
mean(x[grps])
}, start=start, end=end, x=x)
names(res) <- names(qs)
return(res)
}
res <- do.call(rbind,
lapply(split(tmp, tmp$codigo),
function(y)
quantileByCounts(y$valor, y$ponderador, c(.25, .75))))
## FIM
2011/7/2 Carlos Mendonça <csaeslpv em centroin.com.br>:
> Estou com problema para utilizar a minha base de dados(.mdb). Ela tem em
> torno de 2 milhões de registros, e
>>
>>
>> quando tento executar aparece um erro de falta de memória ("Erro: não é
>> possível alocar vetor de tamanho 1.1 Gb").
>> Como posso resolver essa questão?
>
>
> Coloquei um exemplo reproduzivel, inclusive com a leitura de dados.
>>
>> Criei um arquivo com parte da minha base de dados. O link é
>> http://www.datafilehost.com/download-529c5b03.html
>>
>> O código que eu estou utilizando está no link
>> http://www.datafilehost.com/download-a5b8a3ca.html
>> Obrigado,
>> Carlos Mendonça.
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código
> mínimo reproduzível.
>
--
Successful people ask better questions, and as a result, they get
better answers. (Tony Robbins)
Mais detalhes sobre a lista de discussão R-br