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.

¿Por qué R solo lee la mitad de la fila que se exporta desde Excel?

Estoy exportando datos sobre la inflación desde Excel a R que abarcan desde 1960 hasta 2020 en 29 países. El problema es que R no lee la fila de los años que sigue a 2007.

Otro problema es que las columnas de los años se leen como “caracter” por R desde 1960 hasta 1997. Luego cambia a “double”, como se puede ver en la imagen de abajo.

He intentado cambiar el formato de la fila de los años a “número” en Excel, pero no solucionó el problema.

Dividí los datos y copié los años que siguen a 2007 en otra hoja. Luego pude exportarlos (años de 2008 a 2020) por separado y R pudo leer la primera fila de los años sin ningún problema. No estoy seguro de qué significa eso, pero mi objetivo es exportar todos los datos de una vez desde la misma hoja. ¿Alguien podría ayudarme con eso, por favor?

Aquí está el código:

library(readxl)
CPI <- read_excel("~/Desktop/Excel sheets/CPI.xlsx")

Aquí están los datos:

https://docs.google.com/spreadsheets/d/14Xrr_0Beul4fA2LD6YIeEiBP58P0SMoF/edit?usp=sharing

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Existen algunos pasos que puedes seguir para solucionar los problemas al leer los datos de Excel en R:

    1. Verifica el formato de la columna de años en Excel: Asegúrate de que la columna de años esté formateada como una columna de números o fechas en Excel, y no como texto. Esto garantizará que R lea los años como valores numéricos en lugar de caracteres.
    2. Usa el argumento range en read_excel(): De forma predeterminada, read_excel() lee la primera hoja del archivo de Excel. Sin embargo, puedes especificar un rango de celdas para leer de la hoja utilizando el argumento range. Por ejemplo, para leer datos de las celdas A1:D30, usarías range = "A1:D30".

    3. Combina datos de varias hojas: Si tienes datos divididos en varias hojas y deseas combinarlos en un solo marco de datos en R, puedes usar la función rbind() para concatenar las filas. Por ejemplo, si tienes datos en Sheet1!A1:D30 y Sheet2!A1:D30, puedes usar rbind(read_excel("ruta/al/archivo.xlsx", range = "Sheet1!A1:D30"), read_excel("ruta/al/archivo.xlsx", range = "Sheet2!A1:D30")) para combinar los datos de ambas hojas.

    Aquí tienes un código actualizado para abordar estos problemas:

    library(readxl)
    
    # Leer datos de Excel usando el argumento range
    CPI <- read_excel("ruta/al/archivo.xlsx", range = "A1:AD30")
    
    # Verificar los tipos de datos
    str(CPI)
    
    # Convertir la columna de años a numérica
    CPI$Year <- as.numeric(CPI$Year)
    
    # Verificar los tipos de datos nuevamente
    str(CPI)
    
    # Combinar datos de varias hojas
    CPI_all <- rbind(read_excel("ruta/al/archivo.xlsx", range = "Sheet1!A1:AD30"), read_excel("ruta/al/archivo.xlsx", range = "Sheet2!A1:AD30"))
    
    # Verificar los datos combinados
    head(CPI_all)
    

    Ten en cuenta que deberás actualizar ruta/al/archivo.xlsx con la ubicación correcta del archivo en tu computadora. También puedes ajustar el argumento range para incluir todas las filas y columnas de tus datos.

Comments are closed.