R Language
E / S pour les tables étrangères (Excel, SAS, SPSS, Stata)
Recherche…
Importer des données avec rio
Un moyen très simple d'importer des données à partir de nombreux formats de fichiers courants est d' utiliser rio . Ce paquet fournit une fonction import()
qui encapsule de nombreuses fonctions d'importation de données couramment utilisées, fournissant ainsi une interface standard. Cela fonctionne simplement en passant un nom de fichier ou une URL à 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()
peut également lire des répertoires compressés, des URL (HTTP ou HTTPS) et le presse-papiers. Une liste complète de tous les formats de fichiers pris en charge est disponible sur le référentiel github du package rio .
Il est même possible de spécifier d'autres paramètres liés au format de fichier spécifique que vous essayez de lire, en les transmettant directement dans la fonction 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
Importation de fichiers Excel
Il existe plusieurs packages R pour lire les fichiers Excel, chacun utilisant des langues ou des ressources différentes, comme indiqué dans le tableau suivant:
Paquet R | Les usages |
---|---|
xlsx | Java |
XLconnect | Java |
openxlsx | C ++ |
readxl | C ++ |
RODBC | ODBC |
gdata | Perl |
Pour les packages utilisant Java ou ODBC, il est important de connaître les détails de votre système car vous pouvez rencontrer des problèmes de compatibilité en fonction de votre version R et de votre système d'exploitation. Par exemple, si vous utilisez R 64 bits, vous devez également disposer de Java 64 bits pour utiliser xlsx
ou XLconnect
.
Quelques exemples de lecture de fichiers Excel avec chaque paquet sont fournis ci-dessous. Notez que plusieurs des packages ont les mêmes noms de fonctions ou des noms très similaires. Par conséquent, il est utile d’indiquer le paquet explicitement, comme package::function
. Le paquet openxlsx
nécessite une installation préalable de RTools.
Lecture de fichiers Excel avec le package xlsx
library(xlsx)
L'index ou le nom de la feuille est requis pour l'importation.
xlsx::read.xlsx("Book1.xlsx", sheetIndex=1)
xlsx::read.xlsx("Book1.xlsx", sheetName="Sheet1")
Lecture de fichiers Excel avec le package 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
importe automatiquement les styles de cellule Excel prédéfinis incorporés dans Book1.xlsx
. Ceci est utile lorsque vous souhaitez formater votre objet de classeur et exporter un document Excel parfaitement formaté. Tout d'abord, vous devrez créer les formats de cellule souhaités dans Book1.xlsx
et les enregistrer, par exemple, sous la forme myHeader
, myBody
et myPcts
. Ensuite, après avoir chargé le classeur dans R
(voir ci-dessus):
Headerstyle <- XLConnect::getCellStyle(wb, "myHeader")
Bodystyle <- XLConnect::getCellStyle(wb, "myBody")
Pctsstyle <- XLConnect::getCellStyle(wb, "myPcts")
Les styles de cellule sont maintenant enregistrés dans votre environnement R
Pour attribuer les styles de cellule à certaines plages de vos données, vous devez définir la plage, puis attribuer le style:
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)
Notez que XLConnect
est facile, mais peut devenir extrêmement lent dans le formatage. openxlsx
propose une option de formatage beaucoup plus rapide mais plus encombrante.
Lecture de fichiers Excel avec le package openxlsx
Les fichiers Excel peuvent être importés avec le package 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 feuille, qui doit être lue dans R, peut être sélectionnée soit en indiquant sa position dans l’argument de la sheet
:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = 1)
ou en déclarant son nom:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1")
En outre, openxlsx
peut détecter les colonnes de date dans une feuille de lecture. Afin de permettre la détection automatique des dates, un argument detectDates
doit être défini sur TRUE
:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1", detectDates= TRUE)
Lecture de fichiers Excel avec le package readxl
Les fichiers Excel peuvent être importés sous forme de readxl
données dans R
à l'aide du package readxl
.
library(readxl)
Il peut lire à la fois les fichiers .xls
et .xlsx
.
readxl::read_excel("spreadsheet1.xls")
readxl::read_excel("spreadsheet2.xlsx")
La feuille à importer peut être spécifiée par un numéro ou un nom.
readxl::read_excel("spreadsheet.xls", sheet = 1)
readxl::read_excel("spreadsheet.xls", sheet = "summary")
L'argument col_names = TRUE
définit la première ligne comme nom de colonne.
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE)
L'argument col_types
peut être utilisé pour spécifier les types de colonne dans les données en tant que vecteur.
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE,
col_types = c("text", "date", "numeric", "numeric"))
Lecture de fichiers Excel avec le package RODBC
Les fichiers Excel peuvent être lus à l'aide du pilote ODBC Excel qui s'interface avec le moteur de base de données Windows Access (ACE), anciennement JET. Avec le package RODBC, R peut se connecter à ce pilote et interroger directement les classeurs. Les feuilles de calcul sont supposées conserver les en-têtes de colonne dans la première ligne avec les données des colonnes organisées de types similaires. REMARQUE: cette approche est limitée aux seuls ordinateurs Windows / PC, car JET / ACE sont des fichiers .dll installés et non disponibles sur d'autres systèmes d'exploitation.
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)
En se connectant à un moteur SQL dans cette approche, les feuilles de calcul Excel peuvent être interrogées de la même manière que les tables de base de données, y compris les opérations JOIN
et UNION
. La syntaxe suit le dialecte SQL JET / ACE. REMARQUE: seules les instructions DML d'accès aux données, en particulier SELECT
peuvent être exécutées sur des classeurs, considérées comme des requêtes non modifiables.
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$]")
Même les autres classeurs peuvent être interrogés à partir du même canal ODBC pointant vers un classeur en cours:
otherwkbkdf <- sqlQuery(xlconn, "SELECT * FROM
[Excel 12.0 Xml;HDR=Yes;
Database=C:\\Path\\To\\Other\\Workbook.xlsx].[Sheet1$];")
Lecture de fichiers Excel avec le package gdata
exemple ici
Lire et écrire des fichiers Stata, SPSS et SAS
Les packages foreign
et haven
peuvent être utilisés pour importer et exporter des fichiers à partir d’autres logiciels de statistiques tels que Stata, SPSS et SAS et les logiciels associés. Il existe une fonction de read
pour chacun des types de données pris en charge pour importer les fichiers.
# loading the packages
library(foreign)
library(haven)
library(readstata13)
library(Hmisc)
Quelques exemples pour les types de données les plus courants:
# reading Stata files with `foreign`
read.dta("path\to\your\data")
# reading Stata files with `haven`
read_dta("path\to\your\data")
Le package foreign
peut lire les fichiers stata (.dta) pour les versions de Stata 7-12. Selon la page de développement, le read.dta
est plus ou moins figé et ne sera pas mis à jour pour la lecture dans les versions 13+. Pour les versions plus récentes de Stata, vous pouvez utiliser le package readstata13
ou haven
. Pour readstata13
, les fichiers sont
# reading recent Stata (13+) files with `readstata13`
read.dta13("path\to\your\data")
Pour lire dans les fichiers SPSS et 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
Le package SAScii
fournit des fonctions qui acceptent le code d'importation SAS SET et construisent un fichier texte pouvant être traité avec read.fwf
. Il s'est avéré très robuste pour l'importation de jeux de données à grande diffusion. Le support est à https://github.com/ajdamico/SAScii
Pour exporter des write.foreign()
données vers d'autres packages statistiques, vous pouvez utiliser les fonctions d'écriture write.foreign()
. Cela va écrire 2 fichiers, l'un contenant les données et l'autre contenant les instructions dont l'autre paquet a besoin pour lire les données.
# 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")
Le fichier stocké par SPSS peut également être lu avec read.spss
de cette manière:
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.
Fichier d'importation ou d'exportation de plumes
Feather est une implémentation d' Apache Arrow conçue pour stocker les trames de données de manière indépendante du langage tout en conservant les métadonnées (par exemple les classes de date), augmentant ainsi l'interopérabilité entre Python et R.
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 documentation actuelle contient cet avertissement:
Note aux utilisateurs: Feather doit être traité comme un logiciel alpha. En particulier, le format de fichier est susceptible d'évoluer au cours de l'année à venir. N'utilisez pas Feather pour le stockage de données à long terme.