
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.