Olá Alessandro,
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'

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..)


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

transformado<- ddply(seudataframe[,4:ncol(seudataframe)],.(c(names(seudataframe)[4:ncol(seudataframe)])),a)

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

teste<-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(teste[,4:9],.(c(names(teste)[4:9])),a)

Em 3 de dezembro de 2014 16:39, Alessandro Corrêa <alessand22@yahoo.com.br> escreveu:
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 aqui
vars <- 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 aqui
vars <- 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 Likert
1 = Discordo totalmente
2 = Discordo
3 = Neutro
4 = Concordo
5 = Concordo totalmente

Gostaria de saber se é possível criar uma rotina ou se há uma função capaz de
formatar 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.