
Em 31 de agosto de 2011 09:30, Carlos Mendonça <csaeslpv@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