Modificar valores de dataframe com base em outro dataframe

Prezados, Possuo dois dataframes (nomeados aqui de 1 e 2). Preciso modificar os valores do dataframe1 com base no dataframe2. Mais precisamente: Se os valores da coluna snp1 (dataframe1) forem iguais ao valor da linha snp1 (dataframe2), preciso converter estes valores para 0 (zero), caso contrário o valor deve ser convertido para 1 (um). Alguém tem alguma dica? Att JJ Abaixo uma ilustração do que eu tenho DataFrame 1 --> snp1 snp2 snp3 snp4 1 A A C T 2 A G T G 3 A G C G 4 A A C T 5 T G T T DataFrame 2 --> snp anc 1 snp1 A 2 snp2 G 3 snp3 C 4 snp4 T E o que eu preciso ter: Dataframe final --> snp1 snp2 snp3 snp4 1 0 1 0 0 2 0 0 1 1 3 0 0 0 1 4 0 1 0 0 5 1 0 1 0 -- ============================================ João José de Simoni Gouveia Médico Veterinário, Msc. Doutorando em Zootecnia - PDIZ (UFC/UFPB/UFRPE) Professor Assistente I - Colegiado Acadêmico de Zootecnia Universidade Federal do Vale do São Francisco (UNIVASF) ---------------------------------------------------------------------------------------- Endereço: UNIVASF (Campus Ciências Agrárias) Rodovia BR 407, Km 12, Lote 543 Projeto de Irrigação Senador Nilo Coelho, s/nº-C1 Petrolina, PE - CEP 56.300-000 Telefone: (87)3986-3800/3804-3801 Skype: joao_jose_de_simoni_gouveia E-mail alternativo: jjsgouveia@gmail.com ============================================

Estou certo de que haverão soluções inteligentes de BC, HD e PJ, entre outros, minha solução rápida seria dna <- c("A","T","G","C") # bases do DNA d1 <- as.data.frame(matrix(sample(dna,20,TRUE), ncol=4), stringsAsFactors=FALSE) d2 <- as.data.frame(matrix(sample(dna,20,TRUE), ncol=4), stringsAsFactors=FALSE) colcom <- intersect(names(d1), names(d2)) # colunas comuns sap <- sapply(colcom, function(i){ ifelse(d1[,i]==d2[,i],1,0) }) as.data.frame(sap) À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

d1 <- data.frame(snp1=c("A","A","A","A","T"), snp2=c("A","G","G","A","G"), snp3=c("C","T","C","C","T"), snp4=c("T","G","G","T","T")) d2 <- data.frame(snp=paste("snp",1:4,sep=""), anc=c("A","G","C","T")) sapply(1:ncol(d1), function(i) 1-(as.character(d1[,i])==as.character(d2[i,2]))) Elias T. Krainski
________________________________ De: João José de Simoni Gouveia <joao.gouveia@univasf.edu.br> Para: r-br@listas.c3sl.ufpr.br Enviadas: Sábado, 10 de Dezembro de 2011 22:21 Assunto: [R-br] Modificar valores de dataframe com base em outro dataframe
Prezados,
Possuo dois dataframes (nomeados aqui de 1 e 2). Preciso modificar os valores do dataframe1 com base no dataframe2. Mais precisamente: Se os valores da coluna snp1 (dataframe1) forem iguais ao valor da linha snp1 (dataframe2), preciso converter estes valores para 0 (zero), caso contrário o valor deve ser convertido para 1 (um). Alguém tem alguma dica? Att JJ Abaixo uma ilustração do que eu tenho DataFrame 1 --> snp1 snp2 snp3 snp4 1 A A C T 2 A G T G 3 A G C G 4 A A C T 5 T G T T
DataFrame 2 --> snp anc 1 snp1 A 2 snp2 G 3 snp3 C 4 snp4 T
E o que eu preciso ter: Dataframe final --> snp1 snp2 snp3 snp4 1 0 1 0 0 2 0 0 1 1 3 0 0 0 1 4 0 1 0 0 5 1 0 1 0
-- ============================================ João José de Simoni Gouveia Médico Veterinário, Msc. Doutorando em Zootecnia - PDIZ (UFC/UFPB/UFRPE) Professor Assistente I - Colegiado Acadêmico de Zootecnia Universidade Federal do Vale do São Francisco (UNIVASF) ---------------------------------------------------------------------------------------- Endereço: UNIVASF (Campus Ciências Agrárias) Rodovia BR 407, Km 12, Lote 543 Projeto de Irrigação Senador Nilo Coelho, s/nº-C1 Petrolina, PE - CEP 56.300-000 Telefone: (87)3986-3800/3804-3801 Skype: joao_jose_de_simoni_gouveia E-mail alternativo: jjsgouveia@gmail.com ============================================ _______________________________________________ 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.
participantes (3)
-
Elias T. Krainski
-
João José de Simoni Gouveia
-
Walmes Zeviani