
Prezado Fernando, Sua proposta é bem intuitiva, mas deu erro na linha:transformado<-ddply(dados2,.(c(names(teste[,4:9]))),a) Erro em eval(expr, envir, enclos) : objeto 'teste' não encontrado Em que momento defino "teste'? Alessandro Em Quarta-feira, 3 de Dezembro de 2014 2:21, Fernando Antonio de souza <nandodesouza@gmail.com> escreveu: Não tão enxuta como a do Alessandro mas também resolve. dados<- structure(list(sexo = c(1L, 0L, 1L, 0L, 1L, 0L), idade = c(44L, 63L, 52L, 51L, 32L, 33L), tempo = c(24, 28, 6, 27, 3.5, 5), q1 = c(4L, 1L, 4L, 4L, 1L, 1L), q2 = c(3L, 5L, 5L, 4L, 3L, 5L), q3 = c(3L, 2L, 4L, 4L, 2L, 1L), q4 = c(3L, 2L, 2L, 3L, 1L, 1L), q5 = c(2L, 3L, 5L, 3L, 4L, 1L), q6 = c(4L, 1L, 4L, 3L, 3L, 1L)), .Names = c("sexo", "idade", "tempo", "q1", "q2", "q3", "q4", "q5", "q6"), class = "data.frame", row.names = c(NA, -6L)) library(plyr) a<-function(x){ for (i in 1:length(x)){ if (x[i] == 1) { x[i] <- "Discordo totalmente" } if (x[i] == 2) { x[i] <-"Discordo" } if (x[i] == 3) { x[i]<-"Neutro" } if (x[i] == 4) { x[i]<-"Concordo" } if (x[i] == 5) { x[i]<-"concordo totalmente" } } return(x) } nomes<-names transformado<-ddply(dados,.(c(names(teste[,4:9]))),a) is.data.frame(transformado) Em 3 de dezembro de 2014 01:32, Alessandro Corrêa <alessand22@yahoo.com.br> escreveu: Prezado Alan, O que foi isso? Mágica? Ú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. -----x <- ... # Seu data.frame aquivars <- sapply(c(1:63), function(x) { paste('Q', x, sep = "") })new_labels <- c("Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente") for (var in vars) { x[[var]] <- factor(x[[var]], label = new_labels, levels = 1:5)}----Confesso que fiquei atordoado, não entendi nada, mas funcionou mesmo!Pode explicar? Já salvei dos dados em .Rdata. Muitíssimo obrigado mesmo. Alessandro Em Quarta-feira, 3 de Dezembro de 2014 0:32, Alan Fachini <alfakini@gmail.com> escreveu: 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: x <- ... # Seu data.frame aquivars <- sapply(c(1:63), function(x) { paste('G', x, sep = "") })new_labels <- c("Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente") for (var in vars) { x[[var]] <- factor(x[[var]], label = new_labels, levels = 1:5)} Abs, alf. 2014-12-03 0:53 GMT-02:00 Alessandro Corrêa <alessand22@yahoo.com.br>: Prezados colegas, Estou com um banco de dados (x) no seguinte formato sexo idade tempo Q1 Q2 Q3 Q4 Q5 Q6 ...Q63 1 44 24.0 4 3 3 3 2 4 0 62 28.0 1 5 2 2 3 1 1 52 6.0 4 5 4 2 5 4 0 51 27.0 4 4 4 3 3 3 1 32 3.5 1 3 2 1 4 3 0 33 5.0 1 5 1 1 1 1 As variáveis de Q1 a Q6 são variáveis na escala de Likert1 = Discordo totalmente2 = Discordo 3 = Neutro 4 = Concordo 5 = Concordo totalmente Gostaria de saber se é possível criar uma rotina ou se há uma função capaz deformatar as variáveis de Q1 a Q63 em fatores com as etiquetas referentes a cada nível. Se eu fosse fazer uma a uma, repetiria 63 vezes o seguinte comando para cada variável: x$Q1<-factor(x$Q1, label=c("Discordo totalmente", "Discordo", "Neutro", "Concordo", "Concordo totalmente"), levels=1:5) Acredito que haja uma maneira mais prática. Obrigado desde já. Alessandro _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.