[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