
Obrigado Ivan pelas considerações. Benilton, sua solução para este caso ficou perfeita ! Então Leonard, no meu caso sempre tenho que fazer esses arredondamentos, pois são muitos os causos cujas somas dão 99,9% ou 100,1% Felicidades! Alex
________________________________ De: Benilton Carvalho <beniltoncarvalho@gmail.com> Para: r-br@listas.c3sl.ufpr.br; Ivan Bezerra Allaman <ivanalaman@yahoo.com.br> Enviadas: Sexta-feira, 27 de Janeiro de 2012 10:04 Assunto: Re: [R-br] arredondar soma para 100%
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 _______________________________________________ R-br mailing list R-br@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.