[R-br] Como trabalhar com uma base de dados muito grande

Benilton Carvalho beniltoncarvalho em gmail.com
Segunda Julho 4 08:30:17 BRT 2011


note q magicamente a minha funcao foi como equantileByCounts(), mas a
intencao era quantileByCounts().

2011/7/4 Benilton Carvalho <beniltoncarvalho em gmail.com>:
> 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)
>



-- 
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