[R-br] Duvida sobre como modificar dados em um data.frame

Paulo Justiniano paulojus em leg.ufpr.br
Sexta Março 2 08:46:09 BRT 2012


Outra maneira mais direta é usando levels e labels

Exemplo:
x <- factor(sample(LETTERS[1:4], 10, rep=T))
x
  [1] B C D B A D D D C B
Levels: A B C D

y <- factor(x, lab=LETTERS[1:4], lev=c("B","A","C","D"))
y
  [1] A C D A B D D D C A
Levels: A B C D




On Thu, 1 Mar 2012, Augusto Ribas wrote:

> Ola pessoal.
> Estou com uma duvida simples aqui.
> Eu estava analisando dados aqui e vi um grafico estranho, dai vi que os dados  estavam digitados errados.
> Mas o erro é simples.
> Existem 2 fatores, e os niveis de um fator estão trocados, mas somente dentro de um nivel do segundo fator, o resto
> esta tudo correto.
> Basicamente existe um vetor e eu tenho que trocar A por B e vive versa.
> Ai eu consegui arrumar imendando um monte de comando mas ficou uma coisa enorme e especifica para algo que parece
> tão simples.
> ai pensei se alguém tem uma solução mais economica e geral que a que eu fiz?
> 
> ###
> #Exemplo de dados
> ###
> resposta<-c(c(rnorm(10,5),rnorm(10,8)),c(rnorm(10,8),rnorm(10,5)))
> fator1<-c(rep(c("A","B"),each=10),rep(c("A","B"),each=10))
> fator2<-rep(c("1","2"),each=20)
> dados<-data.frame(resposta,fator1,fator2)
> 
> ###
> #Grafico Errado
> ###
> library(lattice)
> bwplot(resposta~fator1|fator2,data=dados)
> 
> ###
> #Minha Solução
> ###
> dados[which(dados$fator2%in%"2"),"fator1"]<-sapply(dados[which(dados$fator2%in%"2"),"fator1"],function(x){
> if(x=="B"){
>                                                                                                                    
>                                                                        replace(x, x == "B", "A")
>                                                                                                                   
>                                                                        }
>                                                                                                                   
>                                                                else {
>                                                                                                                   
>                                                                        replace(x, x == "A", "B")
>                                                                                                                   
>                                                                        }
>                                                                                                                    
>                                                                })
>                                                               
> ###
> #Grafico Certo
> ###
> bwplot(resposta~fator1|fator2,data=dados)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> --
> Grato
> Augusto C. A. Ribas
>  
> Site Pessoal: http://augustoribas.heliohost.org
> Lattes: http://lattes.cnpq.br/7355685961127056
> 
> 
>


Mais detalhes sobre a lista de discussão R-br