¿Cómo reemplazar los espacios vacíos con valores de la columna adyacente que necesitan ser separados?
Hola a todos. Lamento mucho mi inglés. Necesito separar los datos de dominio de algunos correos electrónicos en una tabla. Luego, si estos datos de correo tienen el dominio de un país, esta información debe moverse a otra columna que está incompleta en la que se incluyen los participantes de un congreso. Esto es para una base de datos relativamente grande. A continuación, pongo un ejemplo.
correo electrónico | país |
---|---|
naco@gmail.com | CO |
monic45814@gmail.com | AR |
jsalazar@chapingo.mx | |
andresramirez@urosario.edu.co | |
jeimy861491@hotmail.com | CL |
jytvc@hotmail.com |
El resultado debería ser:
correo electrónico | país |
---|---|
naco@gmail.com | CO |
monic45814@gmail.com | AR |
jsalazar@chapingo.mx | MX |
andresramirez@urosario.edu.co | CO |
jeimy861491@hotmail.com | CL |
jytvc@hotmail.com | NA |
Muchas gracias.
davy.ai
Para separar los datos del dominio de los correos electrónicos y mover la información del país a otra columna, se pueden utilizar los paquetes
tidyr
ydplyr
.En primer lugar, se utiliza
separate()
para dividir las direcciones de correo electrónico en dos columnas, una para el nombre de correo electrónico y otra para el dominio. Luego, se utilizamutate()
para crear una nueva columna para la información del país en función del dominio. Finalmente, se utilizareplace_na()
para reemplazar cualquier información faltante del país por NA.Aquí está el código:
“`{r}
library(tidyverse)
create example dataframe
df <- tibble(
email = c(“naco@gmail.com”, “monic45814@gmail.com”, “jsalazar@chapingo.mx”, “andresramirez@urosario.edu.co”, “jeimy861491@hotmail.com”, “jytvc@hotmail.com”),
country = c(“CO”, “AR”, “”, “”, “CL”, “”)
)
separate email into name and domain columns
df <- separate(df, email, c(“email_name”, “email_domain”), sep = “@”)
define country based on domain
df <- df %>%
mutate(country = case_when(
email_domain == “mx” ~ “MX”,
str_detect(email_domain, “\bco\b”) ~ “CO”,
str_detect(email_domain, “\bar\b”) ~ “AR”,
str_detect(email_domain, “\bcl\b”) ~ “CL”,
TRUE ~ “”
))
replace missing country information with NA
df <- df %>%
replace_na(list(country = “NA“))
print final dataframe
df
“`
Esto debería proporcionar el resultado deseado con la información del país adecuadamente movida a la nueva columna.