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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow