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))