<div dir="ltr">Olá Pedro,<div><br></div><div>Cara, muitíssimo obrigado por disponibilizar seu cmd vou começar a usa-lo e replica-lo com meus dados. </div><div>Obrigado mais uma vez.</div><div><br></div><div>Abs.</div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 14 de setembro de 2016 16:13, Pedro Emmanuel Alvarenga Americano do Brasil <span dir="ltr"><<a href="mailto:emmanuel.brasil@gmail.com" target="_blank">emmanuel.brasil@gmail.com</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"><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,<wbr>cond.semhiv,cond.tosse,cond.<wbr>CD4,cond.gestante,cond.urina,<wbr>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.<wbr>semhiv,cond.tosse,cond.CD4,<wbr>cond.gestante,cond.urina,cond.<wbr>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)<wbr>]))</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif">exclusao <- exclusao[-which(<a href="http://is.na" target="_blank">is.na</a>(<wbr>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.<wbr>CD4,cond.escarro,cond.<wbr>gestante,cond.idade,cond.<wbr>medicamento,cond.semhiv,cond.<wbr>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),<wbr>ft=c(1,2,1,3,3,4,3,5,5,6,5,7,<wbr>7,8,7,9,9,10,9,11,11,12,11,13,<wbr>13,14,13,15,15,16,15,17,17,18,<wbr>17,19),radx=.18,rady=.05,arr.<wbr>pos=0.6,arr.length=0.6,shadow.<wbr>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[<wbr>i,2],],from=elpos[fromto[i,1],<wbr>],lwd=1,arr.pos=arr.pos,arr.<wbr>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" target="_blank">is.na</a>(names(tmp[i]))){</font></div><div class="gmail_default"><font color="#073763" face="arial black, sans-serif"> textellipse(elpos[i,],lab=<wbr>paste(names(tmp[i]),"\n",tmp[<wbr>i]),radx=radx,rady=rady,<wbr>shadow.size=shadow.size,cex=<wbr>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[<wbr>i],radx=radx,rady=rady,shadow.<wbr>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><span class="HOEnZb"><font color="#888888"><br></font></span></div></div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><br clear="all"><div><div 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></font></span><div class="gmail_quote"><div><div class="h5">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></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><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><font color="#888888"><div><br></div><div>Abs.</div><div><br></div></font></span></div>
<br></div></div><span class="">______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi<wbr>-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-g<wbr>uia</a>) e forneça código mínimo reproduzível.<br></span></blockquote></div><br></div>
</blockquote></div><br></div>