[R-br] arredondar soma para 100%

Mauro Sznelwar sznelwar em uol.com.br
Domingo Janeiro 29 13:31:04 BRST 2012


Rodei estes comandos com os anteriores e não vi diferença!
a=rep("a",9);b=rep("b",30);c=rep("c",5)
dados=c(a,b,c);tabela=table(dados)
#porc=round(table(dados)/length(dados)*100,digits=1)
pNaive = round(prop.table(tabela), digits=3)
pFix = round(pNaive/sum(pNaive)*100, digits=1)
graf=barplot(tabela,axes=FALSE,ylim=c(0,100));text(graf,porc,format(porc),pos=1);text(graf,porc,"            %",pos=1);text(graf,porc,format(tabela))
title(main = "Quantidade e Porcentagem das Categorias :a,b,c")




Alex, o que vc esta' observado e' a acumulacao de erros de
representacao, devido ao arredondamento. Uma forma de corrigir isso eh
normalizar as proporcoes. Usando os dados aos quais voce referiu-se
acima:

pNaive = round(prop.table(tabela), digits=3)
pFix = round(pNaive/sum(pNaive)*100, digits=1)

Entretanto, note que essa solucao (como representada acima) pode nao
ser geral e exigir algumas repeticoes (afinal, a todo momento voce
esta' tentando representar numeros com trocentas casas decimais num
grau de granularidade bem maior).

Ivan, sobre a representacao de 9/44... Eh 0.20454545... (periodica no
45). Ou, usando a escala acima: 20.4545454545.... Arredondar para a
i-esima casa decimal (pelo menos conforme eu aprendi, que eh
concordante com a implementacao do R) consiste em truncar na casa
(i+1), testar se aquele digito e' maior ou igual a 5 e, se sim,
incrementar a casa i em 1 unidade. Dito isso:

- Arredondar para 1 digito: Segundo digito eh 5, entao incrementa o
primeiro: 20.5
- Arredondar para 2 digitos: Terceiro digito eh 4, entao mantem o segundo: 20.45
- Arredondar para 3 digitos: Quarto digito eh 5, entao incrementa o
terceiro: 20.455

Pode ser que a estrategia a qual voce esteja se referindo seja diferente?

b
.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120129/9400735c/attachment.html>


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