Buscar..


Importando datos con rio

Una forma muy sencilla de importar datos desde muchos formatos de archivo comunes es con rio . Este paquete proporciona una función de import() que envuelve muchas de las funciones de importación de datos más utilizadas, proporcionando así una interfaz estándar. Funciona simplemente al pasar un nombre de archivo o URL para import() :

import("example.csv")       # comma-separated values
import("example.tsv")       # tab-separated values
import("example.dta")       # Stata
import("example.sav")       # SPSS
import("example.sas7bdat")  # SAS
import("example.xlsx")      # Excel

import() también puede leer directorios comprimidos, URL (HTTP o HTTPS) y el portapapeles. Una lista completa de todos los formatos de archivo admitidos está disponible en el repositorio github del paquete rio .

Incluso es posible especificar algunos parámetros adicionales relacionados con el formato de archivo específico que está intentando leer, pasándolos directamente dentro de la función import() :

import("example.csv", format = ",") #for csv file where comma is used as separator
import("example.csv", format = ";") #for csv file where semicolon is used as separator

Importando archivos de Excel

Hay varios paquetes R para leer archivos de Excel, cada uno de los cuales utiliza diferentes idiomas o recursos, como se resume en la siguiente tabla:

Paquete R Usos
xlsx Java
XLconnect Java
openxlsx C ++
readxl C ++
RODBC ODBC
gdata Perl

Para los paquetes que usan Java u ODBC, es importante conocer los detalles de su sistema porque puede tener problemas de compatibilidad dependiendo de su versión R y sistema operativo. Por ejemplo, si está utilizando R 64 bits, también debe tener Java 64 bits para usar xlsx o XLconnect .

A continuación se proporcionan algunos ejemplos de cómo leer archivos de Excel con cada paquete. Tenga en cuenta que muchos de los paquetes tienen nombres de funciones iguales o muy similares. Por lo tanto, es útil indicar el paquete explícitamente, como package::function . El paquete openxlsx requiere la instalación previa de RTools.

Leyendo archivos de excel con el paquete xlsx

library(xlsx)

El índice o nombre de la hoja se requiere para importar.

xlsx::read.xlsx("Book1.xlsx", sheetIndex=1)

xlsx::read.xlsx("Book1.xlsx", sheetName="Sheet1")

Leyendo archivos de Excel con el paquete XLconnect

library(XLConnect)
wb <- XLConnect::loadWorkbook("Book1.xlsx")

# Either, if Book1.xlsx has a sheet called "Sheet1":
sheet1 <- XLConnect::readWorksheet(wb, "Sheet1")
# Or, more generally, just get the first sheet in Book1.xlsx:
sheet1 <- XLConnect::readWorksheet(wb, getSheets(wb)[1])

XLConnect importa automáticamente los estilos de celda de Excel predefinidos incrustados en Book1.xlsx . Esto es útil cuando desea formatear el objeto de su libro de trabajo y exportar un documento de Excel perfectamente formateado. Primero, deberá crear los formatos de celda deseados en Book1.xlsx y guardarlos, por ejemplo, como myHeader , myBody y myPcts . Luego, después de cargar el libro de trabajo en R (ver arriba):

Headerstyle <- XLConnect::getCellStyle(wb, "myHeader")
Bodystyle <- XLConnect::getCellStyle(wb, "myBody")
Pctsstyle <- XLConnect::getCellStyle(wb, "myPcts")

Los estilos de celda ahora se guardan en su entorno R Para asignar los estilos de celda a ciertos rangos de sus datos, debe definir el rango y luego asignar el estilo:

Headerrange <- expand.grid(row = 1, col = 1:8)
Bodyrange <- expand.grid(row = 2:6, col = c(1:5, 8))
Pctrange <- expand.grid(row = 2:6, col = c(6, 7))

XLConnect::setCellStyle(wb, sheet = "sheet1", row = Headerrange$row,
             col = Headerrange$col, cellstyle = Headerstyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Bodyrange$row,
             col = Bodyrange$col, cellstyle = Bodystyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Pctrange$row,
             col = Pctrange$col, cellstyle = Pctsstyle)

Tenga en cuenta que XLConnect es fácil, pero puede tener un formato extremadamente lento. openxlsx ofrece una opción de formato mucho más rápida, pero más engorrosa.

Leyendo archivos de excel con el paquete openxlsx

Los archivos de Excel se pueden importar con el paquete openxlsx

library(openxlsx)

openxlsx::read.xlsx("spreadsheet1.xlsx", colNames=TRUE, rowNames=TRUE)

#colNames: If TRUE, the first row of data will be used as column names.
#rowNames: If TRUE, first column of data will be used as row names.

La hoja, que debe leerse en R puede seleccionarse al proporcionar su posición en el argumento de la sheet :

openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = 1)

o declarando su nombre:

openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1")

Además, openxlsx puede detectar columnas de fecha en una hoja de lectura. Para permitir la detección automática de fechas, un argumento detectDates debe establecer en TRUE :

openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1", detectDates= TRUE)

Leyendo archivos de excel con el paquete readxl

Los archivos de Excel se pueden importar como un marco de datos en R usando el paquete readxl .

library(readxl)

Puede leer archivos .xls y .xlsx .

readxl::read_excel("spreadsheet1.xls")
readxl::read_excel("spreadsheet2.xlsx")

La hoja a importar se puede especificar por número o nombre.

readxl::read_excel("spreadsheet.xls", sheet = 1)
readxl::read_excel("spreadsheet.xls", sheet = "summary")

El argumento col_names = TRUE establece la primera fila como nombres de columna.

 readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE)

El argumento col_types se puede usar para especificar los tipos de columna en los datos como un vector.

readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE,
                   col_types = c("text", "date", "numeric", "numeric"))

Leyendo archivos de excel con el paquete RODBC

Los archivos de Excel se pueden leer utilizando el controlador ODBC Excel que interactúa con el motor de base de datos de acceso de Windows (ACE), anteriormente JET. Con el paquete RODBC, R puede conectarse a este controlador y consultar libros directamente. Se asume que las hojas de trabajo mantienen los encabezados de columna en la primera fila con datos en columnas organizadas de tipos similares. NOTA: Este enfoque se limita a que solo las máquinas con Windows / PC, ya que JET / ACE, tienen archivos .dll instalados y no están disponibles en otros sistemas operativos.

library(RODBC)

xlconn <- odbcDriverConnect('Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
                             DBQ=C:\\Path\\To\\Workbook.xlsx')

df <- sqlQuery(xlconn, "SELECT * FROM [SheetName$]")
close(xlconn)

Al conectarse con un motor SQL en este enfoque, las hojas de cálculo de Excel pueden consultarse de manera similar a las tablas de base de datos, incluidas las operaciones de JOIN y UNION . La sintaxis sigue el dialecto JET / ACE SQL. NOTA: Solo las declaraciones DML de acceso a datos, específicamente SELECT pueden ejecutarse en libros de trabajo, consideradas consultas no actualizables.

joindf <-  sqlQuery(xlconn, "SELECT t1.*, t2.* FROM [Sheet1$] t1
                             INNER JOIN [Sheet2$] t2
                             ON t1.[ID] = t2.[ID]")

uniondf <-  sqlQuery(xlconn, "SELECT * FROM [Sheet1$]
                              UNION  
                              SELECT * FROM [Sheet2$]")

Incluso se pueden consultar otros libros desde el mismo canal ODBC que apunta a un libro actual:

otherwkbkdf <- sqlQuery(xlconn, "SELECT * FROM 
                                 [Excel 12.0 Xml;HDR=Yes;
                                 Database=C:\\Path\\To\\Other\\Workbook.xlsx].[Sheet1$];")

Leyendo archivos de excel con el paquete gdata

ejemplo aquí

Lee y escribe archivos Stata, SPSS y SAS

Los paquetes foreign y haven se pueden usar para importar y exportar archivos de una variedad de otros paquetes estadísticos como Stata, SPSS y SAS y el software relacionado. Hay una función de read para cada uno de los tipos de datos compatibles para importar los archivos.

# loading the packages
library(foreign)
library(haven)
library(readstata13)
library(Hmisc)

Algunos ejemplos para los tipos de datos más comunes:

# reading Stata files with `foreign`
read.dta("path\to\your\data")
# reading Stata files with `haven`
read_dta("path\to\your\data")

El paquete foreign puede leer archivos stata (.dta) para versiones de Stata 7-12. De acuerdo con la página de desarrollo, read.dta está más o menos congelado y no se actualizará para leer en las versiones 13+. Para versiones más recientes de Stata, puede usar el paquete readstata13 o haven . Para readstata13 , los archivos son

# reading recent Stata (13+) files with `readstata13`
read.dta13("path\to\your\data")

Para leer en archivos SPSS y SAS.

# reading SPSS files with `foreign`
read.spss("path\to\your\data.sav", to.data.frame = TRUE)
# reading SPSS files with `haven`
read_spss("path\to\your\data.sav")
read_sav("path\to\your\data.sav")
read_por("path\to\your\data.por")

# reading SAS files with `foreign`
read.ssd("path\to\your\data")
# reading SAS files with `haven`
read_sas("path\to\your\data")
# reading native SAS files with `Hmisc`
sas.get("path\to\your\data")   #requires access to saslib 
# Reading SA XPORT format ( *.XPT ) files
sasxport.get("path\to\your\data.xpt")  # does not require access to SAS executable

El paquete SAScii proporciona funciones que aceptarán el código de importación SAS SET y construirán un archivo de texto que se puede procesar con read.fwf . Ha demostrado ser muy robusto para la importación de grandes conjuntos de datos publicados públicamente. El soporte se encuentra en https://github.com/ajdamico/SAScii

Para exportar marcos de datos a otros paquetes estadísticos, puede utilizar las funciones de escritura write.foreign() . Esto escribirá 2 archivos, uno que contiene los datos y otro que contiene las instrucciones que el otro paquete necesita para leer los datos.

# writing to Stata, SPSS or SAS files with `foreign`
write.foreign(dataframe, datafile, codefile,
              package = c("SPSS", "Stata", "SAS"), ...)
write.foreign(dataframe, "path\to\data\file", "path\to\instruction\file", package = "Stata")

# writing to Stata files with `foreign`
write.dta(dataframe, "file", version = 7L,
          convert.dates = TRUE, tz = "GMT",
          convert.factors = c("labels", "string", "numeric", "codes"))

# writing to Stata files with `haven`
write_dta(dataframe, "path\to\your\data")

# writing to Stata files with `readstata13`
save.dta13(dataframe, file, data.label = NULL, time.stamp = TRUE,
  convert.factors = TRUE, convert.dates = TRUE, tz = "GMT",
  add.rownames = FALSE, compress = FALSE, version = 117,
  convert.underscore = FALSE)

# writing to SPSS files with `haven`
write_sav(dataframe, "path\to\your\data")

El archivo almacenado por el SPSS también se puede leer con read.spss de esta manera:

 foreign::read.spss('data.sav', to.data.frame=TRUE, use.value.labels=FALSE, 
                     use.missings=TRUE, reencode='UTF-8')
# to.data.frame if TRUE: return a data frame
# use.value.labels if TRUE: convert variables with value labels into R factors with those levels
# use.missings if TRUE: information on user-defined missing values will used to set the corresponding values to NA.
# reencode character strings will be re-encoded to the current locale. The default, NA, means to do so in a UTF-8 locale, only.

Importación o exportación de archivo Feather

Feather es una implementación de Apache Arrow diseñada para almacenar marcos de datos de una manera independiente del lenguaje mientras se mantienen los metadatos (por ejemplo, clases de fecha), lo que aumenta la interoperabilidad entre Python y R. La lectura de un archivo de plumas producirá un tibble, no un cuadro de datos estándar.

library(feather)

path <- "filename.feather"
df <- mtcars

write_feather(df, path)

df2 <- read_feather(path)

head(df2)
##  A tibble: 6 x 11
##     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  21.0     6   160   110  3.90 2.620 16.46     0     1     4     4
## 2  21.0     6   160   110  3.90 2.875 17.02     0     1     4     4
## 3  22.8     4   108    93  3.85 2.320 18.61     1     1     4     1
## 4  21.4     6   258   110  3.08 3.215 19.44     1     0     3     1
## 5  18.7     8   360   175  3.15 3.440 17.02     0     0     3     2
## 6  18.1     6   225   105  2.76 3.460 20.22     1     0     3     1

head(df)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

La documentación actual contiene esta advertencia:

Nota para los usuarios: Feather debe tratarse como un software alfa. En particular, es probable que el formato del archivo evolucione durante el próximo año. No utilice Feather para el almacenamiento de datos a largo plazo.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow