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.

Unir dos conjuntos de datos basados en una columna y una fila.

Tengo dos conjuntos de datos, quiero fusionarlos según el país y la fecha, pero el problema es que la fecha en data2 es una fila. ¿Cómo puedo fusionarlos? ¿Tienes alguna idea?

# Crear el primer marco de datos
data1 <- data.frame(ID1 = 1:5,                                 
                    country = letters[1:5],
                    date = c(2011, 2013, 2013, 2014, 2015),
                    x2 = 9)

# Crear el segundo marco de datos
data2 <- data.frame(ID1 = 3:7,                                 
                    country = letters[3:7],
                    2011 = c(4, 4, 5, 1, 1),
                    2012 = 5)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para combinar los dos conjuntos de datos según el país y la fecha, puedes transformar el conjunto de datos data2 de formato ancho a largo utilizando la función gather del paquete tidyr. Esto convertirá la fila de fechas en una columna, facilitando su fusión con el primer conjunto de datos. Aquí tienes un ejemplo de código para hacerlo:

    library(tidyr)
    
    # Transformar data2 de ancho a largo
    data2_largo <- data2 %>%
      gather(fecha, valor, -ID1, -país)
    
    # Combinar los dos conjuntos de datos por país y fecha
    datos_fusionados <- merge(data1, data2_largo, by = c("país", "fecha"))
    

    En el código anterior, se utiliza la función gather para convertir el conjunto de datos de formato ancho a largo, manteniendo fijas las columnas ID1 y país. El conjunto de datos resultante, data2_largo, tendrá tres columnas: ID1, país y fecha (que antes era una fila en data2), junto con un valor correspondiente a cada fecha. Luego se utiliza la función merge para combinar los dos conjuntos de datos según el país y la fecha.

Comments are closed.