Ricerca…


Importazione di dati con Rio

Un modo molto semplice per importare i dati da molti formati di file comuni è con rio . Questo pacchetto fornisce una funzione import() che racchiude molte funzioni di importazione dei dati comunemente utilizzate, fornendo in tal modo un'interfaccia standard. Funziona semplicemente passando un nome file o URL per 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() può anche leggere da directory compresse, URL (HTTP o HTTPS) e dagli appunti. Un elenco completo di tutti i formati di file supportati è disponibile nel repository github del pacchetto rio .

È anche possibile specificare alcuni ulteriori parametri relativi al formato di file specifico che si sta tentando di leggere, passandoli direttamente all'interno della funzione 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

Importazione di file Excel

Esistono diversi pacchetti R per leggere i file excel, ognuno dei quali utilizza lingue o risorse diverse, come riepilogato nella seguente tabella:

Pacchetto R usi
xlsx Giava
XLconnect Giava
openxlsx C ++
readxl C ++
RODBC ODBC
GData Perl

Per i pacchetti che utilizzano Java o ODBC è importante conoscere i dettagli del sistema in quanto potrebbero verificarsi problemi di compatibilità a seconda della versione R e del sistema operativo. Ad esempio, se si utilizzano R 64 bit, è necessario disporre di Java 64 bit per utilizzare xlsx o XLconnect .

Di seguito sono riportati alcuni esempi di lettura dei file excel con ciascun pacchetto. Si noti che molti dei pacchetti hanno nomi di funzioni uguali o molto simili. Pertanto, è utile dichiarare esplicitamente il pacchetto, come package::function . Il pacchetto openxlsx richiede l'installazione precedente di RTools.

Leggendo i file excel con il pacchetto xlsx

library(xlsx)

L'indice o il nome del foglio è richiesto per l'importazione.

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

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

Lettura dei file Excel con il pacchetto 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 automaticamente gli stili di cella Excel predefiniti incorporati in Book1.xlsx . Ciò è utile quando si desidera formattare l'oggetto cartella di lavoro ed esportare un documento Excel perfettamente formattato. Innanzitutto, è necessario creare i formati di cella desiderati in Book1.xlsx e salvarli, ad esempio myHeader , myBody e myPcts . Quindi, dopo aver caricato la cartella di lavoro in R (vedi sopra):

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

Gli stili di cella sono ora salvati nell'ambiente R Per assegnare gli stili di cella a determinati intervalli di dati, è necessario definire l'intervallo e quindi assegnare lo stile:

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)

Si noti che XLConnect è facile, ma può diventare estremamente lento nella formattazione. Un'opzione di formattazione molto più veloce, ma più ingombrante è offerta da openxlsx .

Leggendo i file excel con il pacchetto openxlsx

I file Excel possono essere importati con il pacchetto 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.

Il foglio, che deve essere letto in R, può essere selezionato fornendo la sua posizione nell'argomento sheet :

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

o dichiarando il suo nome:

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

Inoltre, openxlsx può rilevare colonne di date in un foglio letto. Per consentire il rilevamento automatico delle date, un argomento detectDates deve essere impostato su TRUE :

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

Leggendo i file excel con il pacchetto readxl

I file Excel possono essere importati come frame di dati in R usando il pacchetto readxl .

library(readxl)

Può leggere entrambi i file .xls e .xlsx .

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

Il foglio da importare può essere specificato per numero o nome.

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

L'argomento col_names = TRUE imposta la prima riga come nome della colonna.

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

L'argomento col_types può essere usato per specificare i tipi di colonna nei dati come vettore.

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

Lettura dei file excel con il pacchetto RODBC

I file Excel possono essere letti utilizzando il driver ODBC Excel che si interfaccia con l'Access Database Engine (ACE) di Windows, in precedenza JET. Con il pacchetto RODBC, R può connettersi a questo driver e interrogare direttamente le cartelle di lavoro. Si presume che i fogli di lavoro mantengano le intestazioni delle colonne nella prima riga con i dati in colonne organizzate di tipi simili. NOTA: questo approccio è limitato alle sole macchine Windows / PC poiché i file JET / ACE sono installati .dll e non disponibili su altri sistemi operativi.

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)

Collegandosi con un motore SQL in questo approccio, i fogli di lavoro Excel possono essere interrogati in modo simile alle tabelle del database, comprese le operazioni JOIN e UNION . La sintassi segue il dialetto JET / ACE SQL. NOTA: solo le istruzioni DML di accesso ai dati, in particolare SELECT possono essere eseguite su cartelle di lavoro, considerate query non aggiornabili.

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$]")

Anche altre cartelle di lavoro possono essere interrogate dallo stesso canale ODBC che punta a una cartella di lavoro corrente:

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

Lettura dei file excel con il pacchetto gdata

esempio qui

Leggere e scrivere file Stata, SPSS e SAS

I pacchetti foreign e haven possono essere utilizzati per importare ed esportare file da una varietà di altri pacchetti statistici come Stata, SPSS e SAS e il relativo software. Esiste una funzione di read per ciascuno dei tipi di dati supportati per importare i file.

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

Alcuni esempi per i tipi di dati più comuni:

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

Il pacchetto foreign può leggere nei file stato (.dta) per le versioni di Stata 7-12. Secondo la pagina di sviluppo, read.dta è più o meno congelato e non verrà aggiornato per la lettura nelle versioni 13+. Per versioni più recenti di Stata, è possibile utilizzare il pacchetto readstata13 o il haven . Per readstata13 , i file sono

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

Per la lettura nei file SPSS e 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

Il pacchetto SAScii fornisce funzioni che accettano il codice di importazione SAS SET e costruiscono un file di testo che può essere elaborato con read.fwf . Si è dimostrato molto robusto per l'importazione di grandi set di dati rilasciati dal pubblico. Il supporto è disponibile all'indirizzo https://github.com/ajdamico/SAScii

Per esportare i frame di dati in altri pacchetti statistici, è possibile utilizzare le funzioni di scrittura write.foreign() . Questo scriverà 2 file, uno contenente i dati e uno contenente le istruzioni che l'altro pacchetto ha bisogno di leggere i dati.

# 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")

Il file memorizzato da SPSS può anche essere letto con read.spss in questo modo:

 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.

Importazione o esportazione di file Feather

Feather è un'implementazione di Apache Arrow progettata per archiviare i frame di dati in un linguaggio agnostico mantenendo i metadati (ad es. Le classi di date), aumentando l'interoperabilità tra Python e R. La lettura di un file feather produrrà un tibble, non un data.frame standard.

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 documentazione attuale contiene questo avvertimento:

Nota per gli utenti: la piuma deve essere trattata come un software alfa. In particolare, è probabile che il formato del file si evolva nel corso del prossimo anno. Non utilizzare Feather per l'archiviazione dei dati a lungo termine.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow