<div dir="ltr">Leonard,<div><br></div><div>Seu problema me parece que seria muito bem atendido ("código limpo", "claro", etc.) pela função recode do pacote car.</div><div><br></div><div>Como parece-me que você tem bastante coisa para converter talvez a curva de aprendizado dessa nova função possa ser um investimento frente ao possível resultado.</div><div><br></div><div>HTH</div><div>--</div><div>Cesar Rabak</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-11-01 22:05 GMT-02:00 Leonard Mendonça de Assis 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>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="PT-BR" link="blue" vlink="purple"><div class="m_-7458241013196635981WordSection1"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">O within é como se fosse o mutate, funciona como o with, só que retorna o data.frame.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">O problema é que eu tenho uma variável múltipla resposta Area (1 a 3)  que foi planejada de maneira errada, eu vou analisar ela como item de TRI, não como tabela de frequência (o que os malucos coletaram).<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">O problema é que o “within” coloca as variáveis no data.frame na ordem que ele quer, misturando copm outras. Isso me obriga a fazer outras coisas no código.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Já om o mutate, eu tenho que quebrar em etapas extras, pois ele executa na ordem que ele quer e o que está me incomodando ´eisso, pois uma das coisas que faço é apagar a variável velha.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Queria uma solução menos gambiarra que a que mostrei<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">De:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Manoel Galdino [mailto:<a href="mailto:mcz.fea@gmail.com" target="_blank">mcz.fea@gmail.com</a>] <br><b>Enviada em:</b> terça-feira, 1 de novembro de 2016 19:14<br><b>Para:</b> Leonard Mendonça de Assis <<a href="mailto:assis.leonard@gmail.com" target="_blank">assis.leonard@gmail.com</a>>; a lista Brasileira oficial de discussão do programa R. <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>><br><b>Assunto:</b> Re: [R-br] mutate vs within<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Não sei o que é o within que você fala, e seu exemplo não é lá minimamente reproduzível. Então fica difícil ajudar.<u></u><u></u></p><div><p class="MsoNormal">Dito isso, talvez você deveria usar o spread (do pacote tidyr) em área. Mas é difícil ajudar mais sem saber o que você quer fazer direito e sem o exemplo reproduzível.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Abraço,<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">2016-11-01 18:18 GMT-02:00 Leonard Mendonça de Assis via R-br <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>>:<u></u><u></u></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal">Boa tarde a todos<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Surgiu uma dúvida conceitual aqui:<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Eu tenho um data.frame que precisa unir com vários outros, além de fazer várias transformações. Estou utilizando a seguinte sequencia para fazer tudo<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">bhz.data <-<u></u><u></u></p><p class="MsoNormal">  read_csv2(<u></u><u></u></p><p class="MsoNormal">    "Belo Horizonte 20161027.csv",<u></u><u></u></p><p class="MsoNormal">    col_types=colunas) %>%<u></u><u></u></p><p class="MsoNormal">  filter(Filtro == 1 & Filtro.Votar==1) %>%<u></u><u></u></p><p class="MsoNormal">  <span lang="EN-US">select(-Filtro, -Filtro.Votar) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  left_join(label.Sexo,by=c("<wbr>Sexo"="value")) %>% select(-Sexo) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  left_join(label.Faixa.Idade, by=c("Faixa.Idade"="value")) %>% select(-Faixa.Idade) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  left_join(label.Renda, by=c("Renda"="value")) %>% select(-Renda) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  left_join(label.classe, by=c("Renda.Classe"="value")) %>% select(-Renda.Classe) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  </span>left_join(label.Escolaridade, by=c("Escolaridade"="value")) %>% select(-Escolaridade) %>%<u></u><u></u></p><p class="MsoNormal">  <span lang="EN-US">left_join(label.Etinia, by=c('Etinia'="value")) %>% select(-Etinia) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  left_join(label.Religião, by=c("Religião"="value")) %>% select(-Religião) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  </span>left_join(label.Trabalha, by=c("Trabalha"="value")) %>% select(-Trabalha) %>%<u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">mutate(Area.1 = ifelse(<a href="http://is.na" target="_blank">is.na</a>(Area.1),0,Area.1)<wbr>, Area.2 = ifelse(<a href="http://is.na" target="_blank">is.na</a>(Area.2),0,Area.2)<wbr>,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         Area.3 = ifelse(<a href="http://is.na" target="_blank">is.na</a>(Area.3),0,Area.3)<wbr>) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  mutate(area.Educação =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 1,1,0) + ifelse(Area.2 == 1,1,0) + ifelse(Area.3 == 1,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Habitação =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">          ifelse(Area.1 == 2,1,0) + ifelse(Area.2 == 2,1,0) + ifelse(Area.3 == 2,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Limpeza =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 3,1,0) + ifelse(Area.2 == 3,1,0) + ifelse(Area.3 == 3,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Obras.Mobilidade =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 4,1,0) + ifelse(Area.2 == 4,1,0) + ifelse(Area.3 == 4,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Obras.Pavimentação =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 5,1,0) + ifelse(Area.2 == 5,1,0) + ifelse(Area.3 == 5,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Saneamento =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 6,1,0) + ifelse(Area.2 == 6,1,0) + ifelse(Area.3 == 6,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Saúde =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 7,1,0) + ifelse(Area.2 == 7,1,0) + ifelse(Area.3 == 7,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Transpoorte =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 8,1,0) + ifelse(Area.2 == 8,1,0) + ifelse(Area.3 == 8,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Conservação =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 9,1,0) + ifelse(Area.2 == 9,1,0) + ifelse(Area.3 == 9,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Acessibilidade =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 10,1,0) + ifelse(Area.2 == 10,1,0) + ifelse(Area.3 == 10,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Combate.Mosquito =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 11,1,0) + ifelse(Area.2 == 11,1,0) + ifelse(Area.3 == 11,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.MeioAmbiente =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 12,1,0) + ifelse(Area.2 == 12,1,0) + ifelse(Area.3 == 12,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Social =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 13,1,0) + ifelse(Area.2 == 13,1,0) + ifelse(Area.3 == 13,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Esporte.Lazer =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 14,1,0) + ifelse(Area.2 == 14,1,0) + ifelse(Area.3 == 14,1,0),</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         area.Geração.Empregos =</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">           ifelse(Area.1 == 15,1,0) + ifelse(Area.2 == 15,1,0) + ifelse(Area.3 == 15,1,0)) %>%</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  </span>select(-Area.1, -Area.2, -Area.3)<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">A questão é a seguinte:<u></u><u></u></p><p class="MsoNormal">No caso da variável área, que é recodificada de 3 para 15 variáveis, quando eu substituo esta sequencia enorme de mutate por um within, as variáveis ficam em uma ordem diferente da que eu preciso. A questão é: como deixar o código mais limpo nesta situação, visto que esta alternativa funciona, mas parece ser meio gambiarra?<u></u><u></u></p><p class="MsoNormal"><span style="color:#888888"> <u></u><u></u></span></p><p class="MsoNormal"><span style="color:#888888">Leonard<u></u><u></u></span></p></div></div><p class="MsoNormal"><br>______________________________<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" 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" target="_blank">http://www.leg.ufpr.br/r-br-<wbr>guia</a>) e forneça código mínimo reproduzível.<u></u><u></u></p></blockquote></div><p class="MsoNormal"><br><br clear="all"><u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal">-- <u></u><u></u></p><div><p class="MsoNormal">Manoel Galdino<br><a href="https://sites.google.com/site/galdinomcz/" target="_blank">https://sites.google.com/site/<wbr>galdinomcz/</a><u></u><u></u></p></div></div></div></div></div></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>