[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