<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span>Mauro,</span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span>usando o comando</span></div><div><span><span style="font-size: 16px;">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))</span><br></span></div><div><span><span style="font-size: 16px;">a soma era </span></span><span style="font-size: 12pt; ">100,1%</span></div><div><span style="font-size: 12pt; "><br></span></div><div><span style="font-size: 12pt; ">depois com a grande ajuda do Benilton, substituindo porc por pFix</span></div><div><span><span style="font-size:
 16px;">graf=barplot(tabela,axes=FALSE,ylim=c(0,100));text(graf,pFix,format(pFix),pos=1);text(graf,pFix,"            %",pos=1);text(graf,pFix,format(tabela))</span><br></span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span>a soma ficou 100% > perfeito !</span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span>A lástima é que não vale para todo caso !</span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span>Daí tem que se fazer o que o Leonard disse:</span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span><span style="color: rgb(69, 69, 69); font-family: arial, helvetica, sans-serif; font-size: 13px; ">cada gráfico ou tabela, deve deslocar alguém para fazer os</span><br style="color: rgb(69, 69, 69); font-family:
 arial, helvetica, sans-serif; font-size: 13px; "><span style="color: rgb(69, 69, 69); font-family: arial, helvetica, sans-serif; font-size: 13px; ">totais fecharem com as somas.</span> <br></span></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Boa semana!</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Respeitosamente,</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Alex</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;">  <div style="font-size: 12pt;
 font-family: 'times new roman', 'new york', times, serif; "> <div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1">  <b><span style="font-weight:bold;">De:</span></b> Mauro Sznelwar <sznelwar@uol.com.br><br> <b><span style="font-weight: bold;">Para:</span></b> r-br@listas.c3sl.ufpr.br; Ivan Bezerra Allaman <ivanalaman@yahoo.com.br> <br> <b><span style="font-weight: bold;">Enviadas:</span></b> Domingo, 29 de Janeiro de 2012 13:31<br> <b><span style="font-weight: bold;">Assunto:</span></b> Re: [R-br] arredondar soma para 100%<br> </font> </div> <br><meta http-equiv="x-dns-prefetch-control" content="off"><div id="yiv1545132604">

 
 
<style></style>

<div>
<div><font face="Arial" color="#0000ff">Rodei estes comandos com os anteriores e não 
vi diferença!</font></div>
<div><span style="FONT-SIZE:16px;"><font face="Arial" size="2">a=rep("a",9);b=rep("b",30);c=rep("c",5)</font></span></div>
<div>
<div><span style="FONT-SIZE:16px;"><font face="Arial" size="2">dados=c(a,b,c);tabela=table(dados)</font></span></div>
<div><font face="Arial"><font size="2"><span style="font-size: 16px; font-family: times, serif; ">#porc=round(table(dados)/length(dados)*100,digits=1)</span><br></font></font><font face="Arial"><font size="2"><span style="FONT-SIZE:16px;">pNaive = 
round(prop.table(tabela), digits=3)<br>pFix = round(pNaive/sum(pNaive)*100, 
digits=1)<br></span><span style="FONT-SIZE:16px;">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))</span></font></font></div>
<div><span style="FONT-SIZE:16px;"><font face="Arial" size="2">title(main = 
"Quantidade e Porcentagem das Categorias :a,b,c")</font></span></div>
<div><span style="FONT-SIZE:16px;"><br><font face="Arial" size="2"></font></span></div></div>
<div><font face="Arial"><br><font size="2"></font></font></div><font face="Arial" size="2">Alex, o que vc esta' observado e' a acumulacao de erros 
de<br>representacao, devido ao arredondamento. Uma forma de corrigir isso 
eh<br>normalizar as proporcoes. Usando os dados aos quais voce 
referiu-se<br>acima:<br><br>pNaive = round(prop.table(tabela), digits=3)<br>pFix 
= round(pNaive/sum(pNaive)*100, digits=1)<br><br>Entretanto, note que essa 
solucao (como representada acima) pode nao<br>ser geral e exigir algumas 
repeticoes (afinal, a todo momento voce<br>esta' tentando representar numeros 
com trocentas casas decimais num<br>grau de granularidade bem 
maior).<br><br>Ivan, sobre a representacao de 9/44... Eh 0.20454545... 
(periodica no<br>45). Ou, usando a escala acima: 20.4545454545.... Arredondar 
para a<br>i-esima casa decimal (pelo menos conforme eu aprendi, que 
eh<br>concordante com a implementacao do R) consiste em truncar na 
casa<br>(i+1), testar se aquele digito e' maior ou igual a 5 e, se 
sim,<br>incrementar a casa i em 1 unidade. Dito isso:<br><br>- Arredondar para 1 
digito: Segundo digito eh 5, entao incrementa o<br>primeiro: 20.5<br>- 
Arredondar para 2 digitos: Terceiro digito eh 4, entao mantem o segundo: 
20.45<br>- Arredondar para 3 digitos: Quarto digito eh 5, entao incrementa 
o<br>terceiro: 20.455<br><br>Pode ser que a estrategia a qual voce esteja se 
referindo seja diferente?<br><br>b<br>.</font></div>
</div><meta http-equiv="x-dns-prefetch-control" content="on"><br>_______________________________________________<br>R-br mailing list<br><a ymailto="mailto:R-br@listas.c3sl.ufpr.br" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br><br> </div> </div> </blockquote></div>   </div></body></html>