Substituir NA em data.frame 1 por dados data.frame 2

Caro Colegas da r-br, Boa noite. Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem. Obrigado. Alisson Lucrécio da Costa

Envie um CMR para podermos ajuda-lo. att. Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# Date: Thu, 17 Oct 2013 16:34:44 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: [R-br] Substituir NA em data.frame 1 por dados data.frame 2 Caro Colegas da r-br, Boa noite. Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem. Obrigado. Alisson Lucrécio da Costa _______________________________________________ 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.

um merge() talvez te ajude 2013/10/17 Tiago Souza Marçal <tiagosouzamarcal@hotmail.com>
Envie um CMR para podermos ajuda-lo.
att.
Tiago.
#################################################################
Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES
Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas
#################################################################
------------------------------ Date: Thu, 17 Oct 2013 16:34:44 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: [R-br] Substituir NA em data.frame 1 por dados data.frame 2
Caro Colegas da r-br,
Boa noite.
Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem.
Obrigado.
Alisson Lucrécio da Costa
_______________________________________________ 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.
_______________________________________________ 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.

Segue recorte das data.frame 1 (normais.clima) e 2 (inmet.mensal). Obrigado. Alisson Lucrécio da Costa On Thursday, October 17, 2013 8:54 PM, Tiago Souza Marçal <tiagosouzamarcal@hotmail.com> wrote: Envie um CMR para podermos ajuda-lo. att. Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# ________________________________ Date: Thu, 17 Oct 2013 16:34:44 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: [R-br] Substituir NA em data.frame 1 por dados data.frame 2 Caro Colegas da r-br, Boa noite. Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem. Obrigado. Alisson Lucrécio da Costa _______________________________________________ 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. _______________________________________________ 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.

Alisson, boa tarde! Embora o script abaixo possa não ser a melhor forma de resolver o problema, deve servir como ponto de partida! ### <BEGIN> ### ### Dados dURL1 <- ' http://r-br.2285057.n4.nabble.com/attachment/4660645/0/normais.clima.csv' dURL2 <- ' http://r-br.2285057.n4.nabble.com/attachment/4660645/1/inmet.mensal.csv' dNormal <- read.table(dURL1, header=T, sep=';') dMensal <- read.table(dURL2, header=T, sep=';') ### Inspecionando os dados (colunas, linhas e contagem de NA's) length(dNormal); nrow(dNormal); length(which(is.na(dNormal))) length(dMensal); nrow(dMensal); length(which(is.na(dMensal))) head(dNormal,3); head(dMensal,3) ### Mapeia os valores NA's naMap <- which(is.na(dNormal), arr.ind = TRUE, useNames = TRUE); head(naMap) ### Visualiza NA's length(naMap[,1]); length(unique(naMap[,1])) ### Linhas que contém algum NA dNormal[unique(naMap[,1]),] dNormal[(naMap[,1]),] ### mesmo que anterior / talvez aplique 'unique' por 'default'? ### Correlacionar as tables usando $Codigo e $Mes e preparar data.frame naData <- data.frame(naMap) naData$Codigo <- dNormal[naMap[,1],]$Codigo naData$Mes <- dNormal[naMap[,1],]$Mes naData$ver <- (naData$Codigo %in% dMensal$Codigo) & (naData$Mes %in% dMensal$Mes) naData$pos <- NA naData$val <- NA ### (ver)ifica correspondência ### (pos)ição da correspondência ### (val)or correspondente head(naData) ### Linhas sem correspondência head(naData[which(naData$ver==F),]) nrow(naData[which(naData$ver==F),]) ### Obter valores para dados com correspondência ($val) for (i in 1:nrow(naData)) { if (naData$ver[i]==TRUE) { naData$pos[i]=(which(dMensal$Codigo==naData[i,3] & dMensal$Mes==naData[i,4])) naData$val[i]=(dMensal[naData$pos[i],naData$col[i]]) }} ### Confere número de dados sem valor (~ linhas sem correspondência) length(which(is.na(naData$val))) ### Nesse ponto, naData compila o valor e a posição onde mudar. head(naData) ### Operando em uma cópia dos dados originais dNormal2 <- dNormal for (i in 1:nrow(naData)) { dNormal2[naMap[i,1],naMap[i,2]] <- naData$val[i] } ### Inspeção final length(which(is.na(dNormal))) ### NA's no original length(which(is.na(dNormal2))) ### NA's no final head(dNormal2) str(dNormal2) #edit(dNormal2) ### <END> ### Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Caro Éder, muito obrigado por sua atenção o script esta ótimo. Alisson Lucrécio da Costa On Friday, October 18, 2013 2:30 PM, Éder Comunello <comunello.eder@gmail.com> wrote: Alisson, boa tarde! Embora o script abaixo possa não ser a melhor forma de resolver o problema, deve servir como ponto de partida! ### <BEGIN> ### ### Dados dURL1 <- 'http://r-br.2285057.n4.nabble.com/attachment/4660645/0/normais.clima.csv' dURL2 <- 'http://r-br.2285057.n4.nabble.com/attachment/4660645/1/inmet.mensal.csv' dNormal <- read.table(dURL1, header=T, sep=';') dMensal <- read.table(dURL2, header=T, sep=';') ### Inspecionando os dados (colunas, linhas e contagem de NA's) length(dNormal); nrow(dNormal); length(which(is.na(dNormal))) length(dMensal); nrow(dMensal); length(which(is.na(dMensal))) head(dNormal,3); head(dMensal,3) ### Mapeia os valores NA's naMap <- which(is.na(dNormal), arr.ind = TRUE, useNames = TRUE); head(naMap) ### Visualiza NA's length(naMap[,1]); length(unique(naMap[,1])) ### Linhas que contém algum NA dNormal[unique(naMap[,1]),] dNormal[(naMap[,1]),] ### mesmo que anterior / talvez aplique 'unique' por 'default'? ### Correlacionar as tables usando $Codigo e $Mes e preparar data.frame naData <- data.frame(naMap) naData$Codigo <- dNormal[naMap[,1],]$Codigo naData$Mes <- dNormal[naMap[,1],]$Mes naData$ver <- (naData$Codigo %in% dMensal$Codigo) & (naData$Mes %in% dMensal$Mes) naData$pos <- NA naData$val <- NA ### (ver)ifica correspondência ### (pos)ição da correspondência ### (val)or correspondente head(naData) ### Linhas sem correspondência head(naData[which(naData$ver==F),]) nrow(naData[which(naData$ver==F),]) ### Obter valores para dados com correspondência ($val) for (i in 1:nrow(naData)) { if (naData$ver[i]==TRUE) { naData$pos[i]=(which(dMensal$Codigo==naData[i,3] & dMensal$Mes==naData[i,4])) naData$val[i]=(dMensal[naData$pos[i],naData$col[i]]) }} ### Confere número de dados sem valor (~ linhas sem correspondência) length(which(is.na(naData$val))) ### Nesse ponto, naData compila o valor e a posição onde mudar. head(naData) ### Operando em uma cópia dos dados originais dNormal2 <- dNormal for (i in 1:nrow(naData)) { dNormal2[naMap[i,1],naMap[i,2]] <- naData$val[i] } ### Inspeção final length(which(is.na(dNormal))) ### NA's no original length(which(is.na(dNormal2))) ### NA's no final head(dNormal2) str(dNormal2) #edit(dNormal2) ### <END> ### Éder Comunello <comunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Alison, da uma olhada se os códigos abaixo resolvem. c1<-read.table("clima1") c2 <-read.table("clima2") for(k in 1:(ncol(c1)-3)){ for(i in 1:nrow(c1)){ for(j in 1:nrow(c2)){ if(c1[i,1]==c2[j,1] & c1[i,3]==c2[j,3] & is.na(c1[i,(k+3)])){ c1[i,(k+3)]<-c2[j,(k+3)] break } } } } Att. Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# Date: Thu, 17 Oct 2013 17:07:19 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Substituir NA em data.frame 1 por dados data.frame 2 Segue recorte das data.frame 1 (normais.clima) e 2 (inmet.mensal). Obrigado. Alisson Lucrécio da Costa On Thursday, October 17, 2013 8:54 PM, Tiago Souza Marçal <tiagosouzamarcal@hotmail.com> wrote: Envie um CMR para podermos ajuda-lo. att. Tiago.################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# Date: Thu, 17 Oct 2013 16:34:44 -0700From: alissonluc@yahoo.com.brTo: r-br@listas.c3sl.ufpr.brSubject: [R-br] Substituir NA em data.frame 1 por dados data.frame 2Caro Colegas da r-br,Boa noite.Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem.Obrigado. Alisson Lucrécio da Costa_______________________________________________ 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. _______________________________________________R-br mailing listR-br@listas.c3sl.ufpr.brhttps://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-brLeia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. _______________________________________________ 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.

Obrigado Tiago. Alisson Lucrécio da Costa On Friday, October 18, 2013 3:12 PM, Tiago Souza Marçal <tiagosouzamarcal@hotmail.com> wrote: Alison, da uma olhada se os códigos abaixo resolvem. c1<-read.table("clima1") c2 <-read.table("clima2") for(k in 1:(ncol(c1)-3)){ for(i in 1:nrow(c1)){ for(j in 1:nrow(c2)){ if(c1[i,1]==c2[j,1] & c1[i,3]==c2[j,3] & is.na(c1[i,(k+3)])){ c1[i,(k+3)]<-c2[j,(k+3)] break } } } } Att. Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# ________________________________ Date: Thu, 17 Oct 2013 17:07:19 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Substituir NA em data.frame 1 por dados data.frame 2 Segue recorte das data.frame 1 (normais.clima) e 2 (inmet.mensal). Obrigado. Alisson Lucrécio da Costa On Thursday, October 17, 2013 8:54 PM, Tiago Souza Marçal <tiagosouzamarcal@hotmail.com> wrote: Envie um CMR para podermos ajuda-lo. att. Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# ________________________________ Date: Thu, 17 Oct 2013 16:34:44 -0700 From: alissonluc@yahoo.com.br To: r-br@listas.c3sl.ufpr.br Subject: [R-br] Substituir NA em data.frame 1 por dados data.frame 2 Caro Colegas da r-br, Boa noite. Eu tenho 2 data.frame, uma com dados originais publicado e outra como dados gerados a partir de dados de estação climatológicas do Brasil. A primeira data.frame tem alguns NA, os quais preciso substituir pelos valores calculado, assim preciso fazer uma função que encontre o valor e substitua pelo valor na data.frame 2, entretanto essas duas data.frame não tem e numero de linha e ordem. Obrigado. Alisson Lucrécio da Costa _______________________________________________ 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. _______________________________________________ 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. _______________________________________________ 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. _______________________________________________ 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 (4)
-
Alisson Lucrecio
-
Rodrigo Coster
-
Tiago Souza Marçal
-
Éder Comunello