Equalizar duas colunas em dois data frames a fim de realizar posterior merge

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 [image: Mailtrack] <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Remetente notificado por Mailtrack <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 26/06/18 11:37:17

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 < r-br@listas.c3sl.ufpr.br> 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
[image: Mailtrack] <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Remetente notificado por Mailtrack <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 26/06/18 11:37:17
_______________________________________________ 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.
-- Marcos F. Silva http://sites.google.com/site/marcosfs2006
participantes (2)
-
Jobenil Luiz Magalhães Júnior
-
Marcos Silva