Alexandre, <div><br></div><div>Tente assim</div><div><br></div><div>diff(c(0, round(cumsum(p), 3))) * 100<br><br><div class="gmail_quote">2012/1/29 Alexandro (Yahoo) <span dir="ltr"><<a href="mailto:vl.alexandro@yahoo.com.br">vl.alexandro@yahoo.com.br</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><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 class="im"><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><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><div class="im"><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></div></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 face="Arial"> <hr size="1">  <b><span style="font-weight:bold">De:</span></b> Mauro Sznelwar <<a href="mailto:sznelwar@uol.com.br" target="_blank">sznelwar@uol.com.br</a>><div class="im">

<br> <b><span style="font-weight:bold">Para:</span></b> <a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>; Ivan Bezerra Allaman <<a href="mailto:ivanalaman@yahoo.com.br" target="_blank">ivanalaman@yahoo.com.br</a>> <br>

 </div><b><span style="font-weight:bold">Enviadas:</span></b> Domingo, 29 de Janeiro de 2012 13:31<div class="im"><br> <b><span style="font-weight:bold">Assunto:</span></b> Re: [R-br] arredondar soma para 100%<br> </div>
</font> </div>
 <br><div><div class="h5"><div>

 
 


<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">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">dados=c(a,b,c);tabela=table(dados)</font></span></div>
<div><font face="Arial"><font><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><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">title(main = 
"Quantidade e Porcentagem das Categorias :a,b,c")</font></span></div>
<div><span style="FONT-SIZE:16px"><br><font face="Arial"></font></span></div></div>
<div><font face="Arial"><br><font></font></font></div><font face="Arial">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><br></div></div><div class="im">_______________________________________________<br>R-br mailing list<br><a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">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> </div> </blockquote></div>   </div></div>

<br>_______________________________________________<br>
R-br mailing list<br>
<a 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></blockquote></div><br><br clear="all"><div><br></div>-- <br>

Henrique Dallazuanna<br>Curitiba-Paraná-Brasil<br>25° 25' 40" S 49° 16' 22" O<br>
</div>