[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