[R-br] Erro em função

Carlos Mendonça csaeslpv em centroin.com.br
Sexta Setembro 23 07:03:03 BRT 2011


Benilton,
vou tentar explicar melhor o que eu preciso.
Eu tenho um arquivo com as variáveis codigo, peso, val, pond, mes e ano.
Esse arquivo de +/- 1.500.000 observações, tem *n* observações para cada
código por mês e ano. Na minha rotina eu esqueço a informação do mês, pois
eu quero essa rotina por ano. Eu preciso calcular os quartis (1º e 3º) por
código da variável pond ponderados pela variável val. Em seguida preciso
calcular a diferença interquartílica e os limites (superior e inferior) com
os resultados dos quartis. Depois, junto esse arquivo com os limites com o
arquivo com todas as informações e retiro dele as observações cujo pond não
esteja entre os limites. Executo essa  rotina 2 vezes.
Estou mandando os novos links com o código e os dados.
http://www.datafilehost.com/download-7fe849b1.html

http://www.datafilehost.com/download-0437cad6.html

Em 22 de setembro de 2011 10:51, Carlos Mendonça
<csaeslpv em centroin.com.br>escreveu:

>
>
> Em 31 de agosto de 2011 09:30, Carlos Mendonça <csaeslpv em centroin.com.br>escreveu:
>
>> Caros, estou utilizando a função abaixo que calcula os quartis ponderados
>> que funcionou muito bem até agora.
>>
>> tmp = subset(arq1, select=c(codigo, qtd, val))
>> 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)
>>     aux1 <- 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(aux1) <- names(qs)
>>     return(aux1)
>> }
>> aux1 <- do.call(rbind,
>>                lapply(split(tmp, tmp$codigo),
>>                       function(y)
>>                       equantileByCounts(y$qtd, y$val, c(.25, .75))))
>>
>>
>> O meu processamento é por trimestres e em apenas um deles deu a
>> seguinte mensagem de erro:
>>
>>  "Erro em cut.default(coord, bins, labels = FALSE, include.lowest = T) :
>>   'breaks' não são únicos"
>> Alguém saberia me dizer o que posso fazer?
>>
>>                 Um abraço,
>>
>>                 Carlos Mendonça.
>>
>>
>
>
> --
>                 Um abraço,
>
>                 Mendonça
>
>


-- 
                Um abraço,

                Mendonça
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110923/82ec64b8/attachment.html>


Mais detalhes sobre a lista de discussão R-br