<div dir="ltr"><div class="gmail_default" style="font-family:'arial black',sans-serif;font-size:small;color:rgb(7,55,99)">Ei Abel,</div><div class="gmail_default" style="font-family:'arial black',sans-serif;font-size:small;color:rgb(7,55,99)"><br></div><div class="gmail_default" style="font-family:'arial black',sans-serif;font-size:small;color:rgb(7,55,99)">Por coincidencia eu acabei de fazer um. Segue abaixo o script que usei. É grande, mas eu acho que fica bacana. É baseado num exemplo do pacote diagram. </div><div class="gmail_default" style="font-family:'arial black',sans-serif;font-size:small;color:rgb(7,55,99)"><br></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Meus bancos são sempre uma letra</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Essa primeira seção é pra criar um objeto com as quantidades que seriam excluidas</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Total de sujeitos incluidos</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">total <- nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">total</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Idade label(b$v6)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v6 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.idade <- total - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Excluindo os HIV positivo</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v7 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.semhiv <- total - cond.idade - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Assinou o TCLE v8</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v8 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.TCLE <- total - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Tosse ou RX sugestiva de TB v9</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v9 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.tosse <- total - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># CD4 abaixo de 200 v10</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v10 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.CD4 <- total - cond.tosse - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Gestatnes v11</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v11 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.gestante <- total - cond.CD4 - cond.tosse - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Amostra para LAM v12</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v12 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.urina <- total - cond.gestante - cond.CD4 - cond.tosse - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Amostra de escarro v13</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v13 == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0) {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.escarro <- total - cond.urina - cond.gestante - cond.CD4 - cond.tosse - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Usou tuberculostaticos no ultimos 30 dias</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond <- which(b$v13b == "No")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">if(length(cond) > 0){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  b <- b[-cond, ]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">cond.medicamento <- total - cond.escarro - cond.urina - cond.gestante - cond.CD4 - cond.tosse - cond.TCLE - cond.idade - cond.semhiv - nrow(b)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"># Essa seção é pra criar um objeto que tenha os totais que sobram no banco e as quantidade que são retiradas. </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">tmp1 <- c(total,cond.TCLE,cond.idade,cond.semhiv,cond.tosse,cond.CD4,cond.gestante,cond.urina,cond.escarro,cond.medicamento)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">names(tmp1)[1] <- "Total"</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">tmp2 <- c(cond.TCLE,cond.idade,cond.semhiv,cond.tosse,cond.CD4,cond.gestante,cond.urina,cond.escarro,cond.medicamento)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">names(tmp2) <- c("Didn't consent","Age < 18","HIV negative","No cough and normal X-ray","CD4+ > 200","Pregnancy","No urine available","No sputum available","Previous use of TB drugs")</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">for(i in 2:length(tmp1)){tmp1[i] <- tmp1[i - 1] - tmp2[i - 1]}; rm(i)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">exclusao <- NA</font></div><div class="gmail_default"><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif">for(i in seq_along(tmp2)){</span><br></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  exclusao <- c(exclusao,c(tmp1[i],tmp2[i]))</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">};rm(i)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">exclusao <- c(exclusao,c(tmp1[length(tmp1)]))</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">exclusao <- exclusao[-which(<a href="http://is.na">is.na</a>(exclusao))]</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><div class="gmail_default">> exclusao</div><div class="gmail_default">                    Total            Didn't consent                      <NA>                  Age < 18                      <NA> </div><div class="gmail_default">                      278                         0                       278                         0                       278 </div><div class="gmail_default">             HIV negative                      <NA> No cough and normal X-ray                      <NA>                CD4+ > 200 </div><div class="gmail_default">                       25                       253                         1                       252                        45 </div><div class="gmail_default">                     <NA>                 Pregnancy                      <NA>        No urine available                      <NA> </div><div class="gmail_default">                      207                         0                       207                         1                       206 </div><div class="gmail_default">      No sputum available                      <NA>  Previous use of TB drugs                      <NA> </div><div class="gmail_default">                        5                       201                         1                       200 </div><div class="gmail_default">> dput(exclusao)<br></div><div class="gmail_default">structure(c(278L, 0L, 278L, 0L, 278L, 25L, 253L, 1L, 252L, 45L, </div><div class="gmail_default">207L, 0L, 207L, 1L, 206L, 5L, 201L, 1L, 200L), .Names = c("Total", </div><div class="gmail_default">"Didn't consent", NA, "Age < 18", NA, "HIV negative", NA, "No cough and normal X-ray", </div><div class="gmail_default">NA, "CD4+ > 200", NA, "Pregnancy", NA, "No urine available", </div><div class="gmail_default">NA, "No sputum available", NA, "Previous use of TB drugs", NA</div><div class="gmail_default">))</div></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">rm(tmp1,tmp2,total,cond,cond.CD4,cond.escarro,cond.gestante,cond.idade,cond.medicamento,cond.semhiv,cond.TCLE,cond.tosse,cond.urina)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"># Aqui um função baseada no diagram. </span><br></div><div class="gmail_default"><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"># coord é uma matriz com as quantidades de colunas em cada linha onde os baloes serão colocados. No padrão ha duas colunas na primeira linha, duas na segunda... e uma coluna na ultima. </span></div><div class="gmail_default"><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"># ft é uma matriz com duas colunas que indica onde as setas iniciam e terminam. Então se a primeira linha é 1,2 a seta inicia na posição superior esquerda e termina na posição superior direita no exemplo. se a linha for 1,3 a seta começa no superior esquerdo e termina no balçao imediatamente abaixo. Com apenas duas colunas todas as posição pares são a esquerda e a impares são a direita. A posição 5 e 7 são os baloes da esquerda da terceira e quarta linha respectiva. demorei a entender esses posicionamentos do diagram, mas uma vez entendido fica facil. </span></div><div class="gmail_default"><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"># os demais argumentos são configurações passadas para a diagram::textellipse e diagram::</span><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif">straightarrow</span><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"><br></span></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"><br></font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">plot.flowchart <- function(tmp, coord=c(2,2,2,2,2,2,2,2,2,1),ft=c(1,2,1,3,3,4,3,5,5,6,5,7,7,8,7,9,9,10,9,11,11,12,11,13,13,14,13,15,15,16,15,17,17,18,17,19),radx=.18,rady=.05,arr.pos=0.6,arr.length=0.6,shadow.size=0,cex=.85){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  require(diagram)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  # Criando as matrizes com as posi??es dos baloes</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  elpos <- coordinates(coord)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  fromto <- matrix(ncol = 2, byrow = TRUE, data = ft)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  arrpos <- matrix(ncol = 2, nrow = nrow(fromto))</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  # reduzindo as margens</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  par(mar=c(1,1,1,1))</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  # Iniciando o grafico</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  require(diagram)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  openplotmat()</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  # Colocando as setas no grafico</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  for (i in 1:nrow(fromto)){ </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">    arrpos[i,]<- straightarrow(to=elpos[fromto[i,2],],from=elpos[fromto[i,1],],lwd=1,arr.pos=arr.pos,arr.length=arr.length)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  } </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  </font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  # COlocando os baloes no gr?fico</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  for(i in seq_along(tmp)){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">    if(!<a href="http://is.na">is.na</a>(names(tmp[i]))){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">      textellipse(elpos[i,],lab=paste(names(tmp[i]),"\n",tmp[i]),radx=radx,rady=rady,shadow.size=shadow.size,cex=cex)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">    } else {</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">      textellipse(elpos[i,],lab=tmp[i],radx=radx,rady=rady,shadow.size=shadow.size,cex=cex)</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">    }</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">  }</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">}</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">plot.flowchart(exclusao)</font><span style="color:rgb(7,55,99);font-family:'arial black',sans-serif"> </span><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Pedro Brasil</font></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 14 de setembro de 2016 11:28, Abel Brasil Ramos da Silva via R-br <span dir="ltr"><<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Olá a todos, <div><br></div><div>Gostaria de saber como faço para produzir um fluxograma/diagrama de um data.frame, a ideia é produzir algo desse tipo, porém inserindo os totais de cada subamostra e a porcentagem em cada nó.</div><div><br></div><div>P.S: A forma de saída pode ser qualquer uma.</div><div><br></div><div><div><span style="white-space:pre-wrap">                 </span>                   |Econômica</div><div>                      /--S --- classe |Master    </div><div><span style="white-space:pre-wrap">                    </span>                   |Executiva</div><div>        M---surv |</div><div><span style="white-space:pre-wrap">                     </span>                   |Econômica</div><div>                      \--N --- classe  |Master</div><div><span style="white-space:pre-wrap">                        </span>                    |Executiva</div><div>sex--|                       </div><div><span style="white-space:pre-wrap">                 </span>                    |Econômica </div><div>                     /--S ---  classe   |Master</div><div><span style="white-space:pre-wrap">                   </span>                    |Executiva</div><div>         F---surv |               </div><div><span style="white-space:pre-wrap">                   </span>                   |Econômica</div><div>                     \--N ---  classe  |Master</div><div><span style="white-space:pre-wrap">                       </span>                    |Executiva</div></div><div><br></div><div>Exemplo seria um banco similar a esse:<br></div><div><br></div><div><div>set.seed(1)</div><div>sexo=sample(c(0,1),50,replace=<wbr>T)</div><div>sexo=factor(sexo,levels=c(0,1)<wbr>,label=c("Feminino","Masculino<wbr>"))</div><div>surv=sample(c(0,1),50,replace=<wbr>T)</div><div>surv=factor(surv,levels=c(0,1)<wbr>,label=c("Não","Sim"))</div><div>classe=sample(c(0,1,2),50,repl<wbr>ace=T)</div><div>classe=factor(classe,levels=c(<wbr>0,1,2),label=c("Econômica","Ma<wbr>ster","Executiva"))</div><div><br></div><div>dados=data.frame(sexo,surv,cla<wbr>sse)</div><div><br></div><div>s=table(dados$sexo);s</div><div>sp=round(prop.table(s)*100,2);<wbr>sp</div><div><br></div><div>Msexo=subset(dados,sexo=="Masc<wbr>ulino")</div><div>cM=table(Msexo$classe);cM</div><div>cpM=round(prop.table(c)*100,2)<wbr>;cpM</div><div><br></div><div>Fsexo=subset(dados,sexo=="Femi<wbr>nino")</div><div>cF=table(Fsexo$classe);cF</div><div>cpF=round(prop.table(c)*100,2)<wbr>;cpF</div><div><br></div></div><div>Agradeço pela ajuda desde já.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Abs.</div><div><br></div></font></span></div>
<br>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/<wbr>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-<wbr>guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>