
Acho q o cliente de email vai "zoar" minha solucao 1 (por ser longa)... mas e' tudo numa linha so'. b 2012/3/1 Benilton Carvalho <beniltoncarvalho@gmail.com>:
Augusto, vc sempre pode optar pela simplicidade (solucao 2)... Vou comecar com o seu exemplo (obrigado!!!) e, dai', vou para como eu resolveria:
### #Exemplo de dados - com set.seed ### set.seed(1) 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)
## backup dos dados dados0 <- dados
## sua solucao como referencia 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")
}
})
## solucao 1 dados1 <- with(dados0, {idx = fator2 == 2; fator1[idx] <- ifelse(fator1[idx] == 'A','B','A'); data.frame(resposta, fator1, fator2)})
## solucao 2 dados2 <- dados0 idx <- dados2$fator2 == 2 dados2$fator1[idx] <- with(dados2[idx,], ifelse(fator1 == 'A', 'B', 'A'))
all(dados == dados1) all(dados == dados2)
abs, b
2012/3/1 Augusto Ribas <ribas.aca@gmail.com>:
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
_______________________________________________ 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.