es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for 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 y dplyr.

    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 utiliza mutate() para crear una nueva columna para la información del país en función del dominio. Finalmente, se utiliza replace_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.

Comments are closed.