[R-br] Equalizar duas colunas em dois data frames a fim de realizar posterior merge

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Equalizar duas colunas em dois data frames a fim de realizar posterior merge

R-br mailing list

Boa tarde pessoal,

Estou tentando realizar o merge em dois dataframes, porém as respectivas colunas são ligeiramente diferentes:

df1 <- (concatenado = c("1 _ 307", "22 _ 105", "12 _ 303", "6 _ 201"), var1 = 1:4, var2 = rnorm(4))
df2 <- (concatenar = c("500002_01 _ 307", "5001245_05 _ 303", "500033_22 _ 105",
  "501256_12 _ 303", "500345_06 _ 201", var3 = runif(5), var4 = rnorm(5))

Quero usar os 8 últimos caracteres da variável df2$concatenar e comparar com as da variável df1$concatenado.
Noto que tenho dois problemas: 1) completar com 0 "zeros" à esquerda os valores à esquerda em df1$concatenado, quando forem menores do que 10.
2) Extrair os 8 caracteres à direita da variável df2$concatenar.

Como posso equalizar as duas colunas?
Agradeço desde logo qualquer ajuda que puderem dispensar.
Atenciosamente
Jobenil Júnior
 
 


Mailtrack Remetente notificado por
Mailtrack 26/06/18 11:37:17

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Equalizar duas colunas em dois data frames a fim de realizar posterior merge

R-br mailing list
Caro Jobenil, veja se o código abaixo ajuda alguma coisa.

df1 <- data.frame(concatenado = c("1 _ 307", "22 _ 105", "12 _ 303", "6 _ 201"), var1 = 1:4, var2 = rnorm(4), stringsAsFactors = F)
df2 <- data.frame(concatenar = c("500002_01 _ 307", "5001245_05 _ 303", "500033_22 _ 105",
                       "501256_12 _ 303", "500345_06 _ 201"), var3 = runif(5), var4 = rnorm(5), stringsAsFactors = F)

# Limpar 
df1$concatenado <- gsub("[[:punct:]]| ", "", df1$concatenado)
df2$concatenar <-  gsub("[[:punct:]]| ", "", df2$concatenar)

# Tratar
df2$concatenar <- gsub(".*(\\d{8})$", "\\1", df2$concatenar)
df1$concatenado <- sprintf("%08.0f", as.numeric(df1$concatenado))



Em 26 de junho de 2018 11:36, Jobenil Luiz Magalhães Júnior via R-br <[hidden email]> escreveu:

Boa tarde pessoal,

Estou tentando realizar o merge em dois dataframes, porém as respectivas colunas são ligeiramente diferentes:

df1 <- (concatenado = c("1 _ 307", "22 _ 105", "12 _ 303", "6 _ 201"), var1 = 1:4, var2 = rnorm(4))
df2 <- (concatenar = c("500002_01 _ 307", "5001245_05 _ 303", "500033_22 _ 105",
  "501256_12 _ 303", "500345_06 _ 201", var3 = runif(5), var4 = rnorm(5))

Quero usar os 8 últimos caracteres da variável df2$concatenar e comparar com as da variável df1$concatenado.
Noto que tenho dois problemas: 1) completar com 0 "zeros" à esquerda os valores à esquerda em df1$concatenado, quando forem menores do que 10.
2) Extrair os 8 caracteres à direita da variável df2$concatenar.

Como posso equalizar as duas colunas?
Agradeço desde logo qualquer ajuda que puderem dispensar.
Atenciosamente
Jobenil Júnior
 
 


Mailtrack Remetente notificado por
Mailtrack 26/06/18 11:37:17

_______________________________________________
R-br mailing list
[hidden email]
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
[hidden email]
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.