<div dir="ltr">Ops esqueci de terminar de colar o código. Código completo <br><br>teste<-structure(list(sexo = c(1L, 0L, 1L, 0L, 1L, 0L), idade = c(44L, <br><span class="im">63L, 52L, 51L, 32L, 33L), tempo = c(24, 28, 6, 27, 3.5, 5), q1 = c(4L, <br>1L, 4L, 4L, 1L, 1L), q2 = c(3L, 5L, 5L, 4L, 3L, 5L), q3 = c(3L, <br>2L, 4L, 4L, 2L, 1L), q4 = c(3L, 2L, 2L, 3L, 1L, 1L), q5 = c(2L, <br>3L, 5L, 3L, 4L, 1L), q6 = c(4L, 1L, 4L, 3L, 3L, 1L)), .Names = c("sexo", <br>"idade", "tempo", "q1", "q2", "q3", "q4", "q5", "q6"), class = "data.frame", row.names = c(NA, <br>-6L))</span><br><br>library(plyr)<br>a<-function(x){<br>      for (i in 1:length(x)){<br>           if (x[i] == 1) {<br>                   x[i] <- "Discordo totalmente"<br>           }<br>           if (x[i] == 2) {<br>                   x[i] <-"Discordo"<br>           }<br>           if (x[i] == 3) {<br>                   x[i]<-"Neutro"<br>           }<br>           if (x[i] == 4) {<br>                   x[i]<-"Concordo"<br>           }<br>           if (x[i] == 5) {<br>                   x[i]<-"concordo totalmente"<br>           }<br>   }<br>   return(x)<br>}<br> nomes<-names<br>transformado<- ddply(teste[,4:9],.(c(names(teste)[4:9])),a)<br>tabela_transformada <- cbind(teste[,1:3],transformado)<br></div><div class="gmail_extra"><br><div class="gmail_quote">Em 3 de dezembro de 2014 17:13, Fernando Antonio de souza <span dir="ltr"><<a href="mailto:nandodesouza@gmail.com" target="_blank">nandodesouza@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><div><div>Olá Alessandro,<br></div>teste é o nome que utilizei para  o dataframe. É que digitei os dados que você forneceu para testar o comando. Na função que lhe enviei você deverá substituir "teste" pelo nome de seu dataframe e selecione um subgrupo formado pela primeira coluna onde aparece q1 até a última coluna dos q'<br><br></div>no exemplo eu selecionei este subgrupo assim teste[,4:9] isso porque as 3 primeiras colunas dos dados que envio (sexo,idade e tempo) não é para ser transformada, as colunas 4,5,6,7,8,9 , as quais referem as variávies q1,q2,q3,q4,q5,q6 é onde você deseja colocar a condificação (concordo, não concordo, etc..)<br><br><br></div><div>para seu uso , se seu data frame esta da forma como envio, com as 3 primeiras colunas indicando sexo, idade e tempo, substitua teste[,4:9] por seudataframe[,4:ncol(seudataframe)] como o exemplo<br><br>transformado<- ddply(seudataframe[,4:ncol(seudataframe)],.(c(names(seudataframe)[4:ncol(seudataframe)])),a)<br><br></div><div>Eu fiz umas alteração na função hoje pela manha para melhorar a saída. Copie e cole o código abaixo em seu editor R para ver o que acontece. É necessário instalar o pacote plyr<br></div><div><div><div><div><br></div><div>teste<-structure(list(sexo = c(1L, 0L, 1L, 0L, 1L, 0L), idade = c(44L, <br><span class="">63L, 52L, 51L, 32L, 33L), tempo = c(24, 28, 6, 27, 3.5, 5), q1 = c(4L, <br>1L, 4L, 4L, 1L, 1L), q2 = c(3L, 5L, 5L, 4L, 3L, 5L), q3 = c(3L, <br>2L, 4L, 4L, 2L, 1L), q4 = c(3L, 2L, 2L, 3L, 1L, 1L), q5 = c(2L, <br>3L, 5L, 3L, 4L, 1L), q6 = c(4L, 1L, 4L, 3L, 3L, 1L)), .Names = c("sexo", <br>"idade", "tempo", "q1", "q2", "q3", "q4", "q5", "q6"), class = "data.frame", row.names = c(NA, <br>-6L))<br></span></div><div><span class=""><br>library(plyr)<br>a<-function(x){<br>      for (i in 1:length(x)){<br>           if (x[i] == 1) {<br>                   x[i] <- "Discordo totalmente"<br>           }<br>           if (x[i] == 2) {<br>                   x[i] <-"Discordo"<br>           }<br>           if (x[i] == 3) {<br>                   x[i]<-"Neutro"<br>           }<br>           if (x[i] == 4) {<br>                   x[i]<-"Concordo"<br>           }<br>           if (x[i] == 5) {<br>                   x[i]<-"concordo totalmente"<br>           }<br>   }<br>   return(x)<br>}<br> nomes<-names<br></span>transformado<- ddply(teste[,4:9],.(c(names(teste)[4:9])),a)<br></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 3 de dezembro de 2014 16:39, Alessandro Corrêa <span dir="ltr"><<a href="mailto:alessand22@yahoo.com.br" target="_blank">alessand22@yahoo.com.br</a>></span> escreveu:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="color:#000;background-color:#fff;font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"><div dir="ltr"><span>Prezado Fernando,</span></div><div dir="ltr"><span><br></span></div><div dir="ltr">Sua proposta é bem intuitiva, mas deu erro na linha:</div><div dir="ltr">transformado<-ddply(dados2,.(c(names(teste[,4:9]))),a)<br></div><div dir="ltr">Erro em eval(expr, envir, enclos) : objeto 'teste' não encontrado<br></div><div dir="ltr"><br></div><div dir="ltr">Em que momento defino "teste'?</div><div dir="ltr"><br></div><div dir="ltr">Alessandro</div><div dir="ltr"><br></div> <div><br><br></div><div style="display:block"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div dir="ltr"> <font face="Arial"> Em Quarta-feira, 3 de Dezembro de 2014 2:21, Fernando Antonio de souza <<a href="mailto:nandodesouza@gmail.com" target="_blank">nandodesouza@gmail.com</a>> escreveu:<br> </font> </div><div><div>  <br><br> <div><div><div><div dir="ltr">Não tão enxuta como a do Alessandro mas também resolve.<br clear="none"><div><br clear="none"><br clear="none">dados<- structure(list(sexo = c(1L, 0L, 1L, 0L, 1L, 0L), idade = c(44L, <br clear="none">63L, 52L, 51L, 32L, 33L), tempo = c(24, 28, 6, 27, 3.5, 5), q1 = c(4L, <br clear="none">1L, 4L, 4L, 1L, 1L), q2 = c(3L, 5L, 5L, 4L, 3L, 5L), q3 = c(3L, <br clear="none">2L, 4L, 4L, 2L, 1L), q4 = c(3L, 2L, 2L, 3L, 1L, 1L), q5 = c(2L, <br clear="none">3L, 5L, 3L, 4L, 1L), q6 = c(4L, 1L, 4L, 3L, 3L, 1L)), .Names = c("sexo", <br clear="none">"idade", "tempo", "q1", "q2", "q3", "q4", "q5", "q6"), class = "data.frame", row.names = c(NA, <br clear="none">-6L))<br clear="none"><br clear="none">library(plyr)<br clear="none"><br clear="none">a<-function(x){<br clear="none">      for (i in 1:length(x)){<br clear="none">           if (x[i] == 1) {<br clear="none">                   x[i] <- "Discordo totalmente"<br clear="none">           }<br clear="none">           if (x[i] == 2) {<br clear="none">                   x[i] <-"Discordo"<br clear="none">           }<br clear="none">           if (x[i] == 3) {<br clear="none">                   x[i]<-"Neutro"<br clear="none">           }<br clear="none">           if (x[i] == 4) {<br clear="none">                   x[i]<-"Concordo"<br clear="none">           }<br clear="none">           if (x[i] == 5) {<br clear="none">                   x[i]<-"concordo totalmente"<br clear="none">           }<br clear="none">   }<br clear="none">   return(x)<br clear="none">}<br clear="none"> nomes<-names<br clear="none"> transformado<-ddply(dados,.(c(names(teste[,4:9]))),a)<br clear="none">is.data.frame(transformado)<br clear="none"><br clear="none"><br clear="none"></div></div><div><br clear="none"><div>Em 3 de dezembro de 2014 01:32, Alessandro Corrêa <span dir="ltr"><<a rel="nofollow" shape="rect">alessand22@yahoo.com.br</a>></span> escreveu:<br clear="none"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="color:#000;background-color:#fff;font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"><div dir="ltr"><span>Prezado Alan,</span></div><div dir="ltr"><span><br clear="none"></span></div><div dir="ltr"><span>O que foi isso? Mágica?</span></div><div dir="ltr"><span><br clear="none"></span></div><div dir="ltr">Única alteração que fiz foi trocar o G pelo Q. Inclusive saltou as primeiras 3 variáveis que eram sexo, idade e tempo que não deveriam ser alteradas pela função.</div><div dir="ltr"><br clear="none"></div><div dir="ltr">-----</div><div><span></span><div><font size="3">x <- ... # Seu data.frame aqui</font></div><div><font size="3">vars <- sapply(c(1:63), function(x) { paste('Q', x, sep = "") })</font></div><span></span><div><font size="3">new_labels <- c("Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente")</font></div><div><font size="3"><br clear="none"></font></div><div><font size="3">for (var in vars) {</font></div><div><font size="3">    x[[var]] <- factor(x[[var]], label = new_labels, levels = 1:5)</font></div><div><font size="3">}</font></div><div><font size="3">----</font></div><div dir="ltr"><font size="3">Confesso que fiquei atordoado, não entendi nada, mas funcionou mesmo!</font></div><div dir="ltr"><font size="3">Pode explicar?</font></div><div dir="ltr"><font size="3"><br clear="none"></font></div><div dir="ltr"><font size="3">Já salvei dos dados em .Rdata. </font></div><div dir="ltr"><font size="3"><br clear="none"></font></div><div dir="ltr"><font size="3">Muitíssimo obrigado mesmo.</font></div><div dir="ltr"><font size="3"><br clear="none"></font></div><div dir="ltr"><font size="3">Alessandro</font></div><div dir="ltr"><br clear="none"></div></div> <div><br clear="none"><br clear="none"></div><div style="display:block"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div dir="ltr"> <font face="Arial"> Em Quarta-feira, 3 de Dezembro de 2014 0:32, Alan Fachini <<a rel="nofollow" shape="rect">alfakini@gmail.com</a>> escreveu:<br clear="none"> </font> </div><div><div>  <br clear="none"><br clear="none"> <div><div><div><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif">​Oi Alessandro, deve ter uma forma mais elegante de se fazer isso no R, mas você pode usar isso aqui para solucionar seu problema rapidamente:</div><div style="font-family:arial,helvetica,sans-serif"><br clear="none"></div><div><font face="monospace">x <- ... # Seu data.frame aqui</font></div><div><font face="monospace">vars <- sapply(c(1:63), function(x) { paste('G', x, sep = "") })</font></div><div><font face="monospace">new_labels <- c("Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente")</font></div><div><font face="monospace"><br clear="none"></font></div><div><font face="monospace">for (var in vars) {</font></div><div><font face="monospace">    x[[var]] <- factor(x[[var]], label = new_labels, levels = 1:5)</font></div><div><font face="monospace">}</font></div><div><span style="font-family:arial,helvetica,sans-serif"><br clear="none"></span></div><div><span style="font-family:arial,helvetica,sans-serif">Abs,</span></div></div><div><br clear="all"><div><div>alf.<br clear="none"></div></div>
<br clear="none"><div>2014-12-03 0:53 GMT-02:00 Alessandro Corrêa <span dir="ltr"><<a rel="nofollow" shape="rect">alessand22@yahoo.com.br</a>></span>:<br clear="none"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="color:#000;background-color:#fff;font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"><div>Prezados colegas,</div><div><br clear="none"></div><div>Estou com um banco de dados (x) no seguinte formato<div><br clear="none"></div><div>sexo idade tempo Q1 Q2 Q3 Q4 Q5 Q6 ...Q63</div><div>    1    44  24.0      4  3  3  3  2  4</div><div><div>    0    62  28.0      1  5  2  2  3  1</div><div>    1    52   6.0       4  5  4  2  5  4</div><div>    0    51  27.0      4  4  4  3  3  3</div><div>    1    32   3.5       1  3  2  1  4  3</div><div>    0    33   5.0       1  5  1  1  1  1</div></div><div><br clear="none"></div><div>As variáveis de Q1 a Q6 são variáveis na escala de Likert</div><div><div style="font-family:arial,sans-serif"><font size="3">1 = Discordo totalmente</font></div><div style="font-family:arial,sans-serif"><font size="3">2 = Discordo<br clear="none"></font></div><div style="font-family:arial,sans-serif"><font size="3">3 = Neutro<br clear="none"></font></div><div style="font-family:arial,sans-serif"><font size="3">4 = Concordo<br clear="none"></font></div><div style="font-family:arial,sans-serif"><font size="3">5 = Concordo totalmente</font></div></div><div style="font-family:arial,sans-serif"><font size="3"><br clear="none"></font></div><div style="font-family:arial,sans-serif"><font size="3">Gostaria de saber se é possível criar uma rotina ou se há uma função capaz de</font></div><div style="font-family:arial,sans-serif"><font size="3">formatar as variáveis de Q1 a Q63 em fatores com as etiquetas referentes a cada nível.</font></div><div style="font-family:arial,sans-serif"><font size="3"><br clear="none"></font></div><div style="font-family:arial,sans-serif"><font size="3">Se eu fosse fazer uma a uma, repetiria 63 vezes o seguinte comando para cada variável:</font></div><div style="font-family:arial,sans-serif"><font size="3"><br clear="none"></font></div><div><div style="color:rgb(34,34,34);font-family:arial"><font size="3"><font face="arial, sans-serif">x$Q1<-factor(x$Q1, label=c(</font><span style="font-family:arial,sans-serif">"Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente"</span><font face="arial, sans-serif">), levels=1:5)</font></font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3"><br clear="none"></font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3">Acredito que haja uma maneira mais prática.</font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3"><br clear="none"></font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3">Obrigado desde já.</font></div><span><font color="#888888"></font></span><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3"><br clear="none"></font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3"><br clear="none"></font></div><div style="color:rgb(34,34,34);font-family:arial"><font face="arial, sans-serif" size="3">Alessandro</font></div></div></div><div><font face="arial, sans-serif"><br clear="none"></font></div><div><br clear="none"></div></div></div><br clear="none">_______________________________________________<br clear="none">
R-br mailing list<br clear="none">
<a rel="nofollow" shape="rect">R-br@listas.c3sl.ufpr.br</a><br clear="none">
<a rel="nofollow" shape="rect">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br clear="none">
Leia o guia de postagem (<a rel="nofollow" shape="rect">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br clear="none"></blockquote></div><br clear="none"></div></div></div><br clear="none"><br clear="none"></div>  </div></div></div> </div>  </div> </div></div><br clear="none">_______________________________________________<br clear="none">
R-br mailing list<br clear="none">
<a rel="nofollow" shape="rect">R-br@listas.c3sl.ufpr.br</a><br clear="none">
<a rel="nofollow" shape="rect">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br clear="none">
Leia o guia de postagem (<a rel="nofollow" shape="rect">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br clear="none"></blockquote></div><br clear="none"></div></div></div><br><br></div>  </div></div></div> </div>  </div> </div></blockquote></div></div></div><br></div>
</blockquote></div><br></div>