
Benilton, estou disponibilizando o código e o data que eu utilizo. Agradeço muito a sua ajuda. http://www.datafilehost.com/download-91695640.html http://www.datafilehost.com/download-8501f2b5.html Carlos Mendonça. Em 20 de setembro de 2011 21:10, Carlos Mendonça <csaeslpv@centroin.com.br>escreveu:
Olá Benilton,
usei
aux1 <- lapply(split(tmp, tmp$codigo),
function(y) equantileByCounts(y$qtd, y$val, c(.25, .75))) Porém, deu o erro abaixo. "Erro em split.default(seq_len(nrow(x)), f, drop = drop, ...) : Comprimento do grupo é zero mas o comprimento dos dados é maior que zero"
Será que tem que fazer mais alguma coisa?
Obrigado pela ajuda,
Carlos Mendonça.
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
-- Um abraço, Mendonça