R Language
E / A für Fremdtabellen (Excel, SAS, SPSS, Stata)
Suche…
Daten mit rio importieren
Eine sehr einfache Möglichkeit, Daten aus vielen gängigen Dateiformaten zu importieren, ist mit rio . Dieses Paket enthält eine Funktion import()
, die viele häufig verwendete Datenimportfunktionen umschließt und somit eine Standardschnittstelle bereitstellt. Es funktioniert einfach, indem Sie einen Dateinamen oder eine URL an 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()
kann auch aus komprimierten Verzeichnissen, URLs (HTTP oder HTTPS) und der Zwischenablage lesen. Eine umfassende Liste aller unterstützten Dateiformate ist im rio-Paket github-Repository verfügbar.
Es ist sogar möglich, einige weitere Parameter anzugeben, die sich auf das bestimmte Dateiformat beziehen, das Sie lesen möchten, und diese direkt an die Funktion 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
Excel-Dateien importieren
Es gibt mehrere R-Pakete zum Lesen von Excel-Dateien, die jeweils unterschiedliche Sprachen oder Ressourcen verwenden, wie in der folgenden Tabelle zusammengefasst:
R paket | Verwendet |
---|---|
xlsx | Java |
XLconnect | Java |
openxlsx | C ++ |
readxl | C ++ |
RODBC | ODBC |
gdata | Perl |
Für die Pakete, die Java oder ODBC verwenden, ist es wichtig, Details zu Ihrem System zu kennen, da in Abhängigkeit von Ihrer R-Version und dem Betriebssystem Kompatibilitätsprobleme auftreten können. Wenn Sie beispielsweise R 64-Bit verwenden, müssen Sie auch über Java 64-Bit verfügen, um xlsx
oder XLconnect
.
Nachfolgend finden Sie einige Beispiele zum Lesen von Excel-Dateien mit jedem Paket. Beachten Sie, dass viele Pakete die gleichen oder sehr ähnliche Funktionsnamen haben. Daher ist es hilfreich, das Paket explizit anzugeben, wie package::function
. Das Paket openxlsx
erfordert eine vorherige Installation von RTools.
Lesen von Excel-Dateien mit dem xlsx-Paket
library(xlsx)
Der Index oder Name des Blattes ist zum Importieren erforderlich.
xlsx::read.xlsx("Book1.xlsx", sheetIndex=1)
xlsx::read.xlsx("Book1.xlsx", sheetName="Sheet1")
Lesen von Excel-Dateien mit dem XLconnect-Paket
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
importiert automatisch die in Book1.xlsx
eingebetteten Book1.xlsx
Excel- Book1.xlsx
. Dies ist nützlich, wenn Sie Ihr Arbeitsmappenobjekt formatieren und ein perfekt formatiertes Excel-Dokument exportieren möchten. Zunächst müssen Sie die gewünschten Book1.xlsx
in Book1.xlsx
und diese beispielsweise als myHeader
, myBody
und myPcts
. Nach dem Laden der Arbeitsmappe in R
(siehe oben):
Headerstyle <- XLConnect::getCellStyle(wb, "myHeader")
Bodystyle <- XLConnect::getCellStyle(wb, "myBody")
Pctsstyle <- XLConnect::getCellStyle(wb, "myPcts")
Die Zellstile werden jetzt in Ihrer R
Umgebung gespeichert. Um die Zellenstile bestimmten Bereichen Ihrer Daten zuzuordnen, müssen Sie den Bereich definieren und dann den Stil zuweisen:
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)
Beachten Sie, dass XLConnect
einfach ist, die Formatierung jedoch extrem langsam werden kann. Eine wesentlich schnellere, aber umständlichere Formatierungsoption bietet openxlsx
.
Lesen von Excel-Dateien mit dem Paket openxlsx
Excel-Dateien können mit dem Paket openxlsx
importiert werden
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.
Das Blatt, das in R gelesen werden soll , kann ausgewählt werden , entweder durch seine Position in dem Bereitstellung sheet
Argumente:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = 1)
oder indem Sie ihren Namen angeben:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1")
Außerdem kann openxlsx
in einem openxlsx
erkennen. Um die automatische Erkennung von Datumsangaben zu ermöglichen, sollte ein Argument detectDates
auf TRUE
:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1", detectDates= TRUE)
Lesen von Excel-Dateien mit dem Paket readxl
Excel-Dateien können als readxl
mit dem Paket readxl
in R
readxl
werden.
library(readxl)
Es kann sowohl .xls
als auch .xlsx
Dateien lesen.
readxl::read_excel("spreadsheet1.xls")
readxl::read_excel("spreadsheet2.xlsx")
Das zu importierende Blatt kann nach Nummer oder Name angegeben werden.
readxl::read_excel("spreadsheet.xls", sheet = 1)
readxl::read_excel("spreadsheet.xls", sheet = "summary")
Das Argument col_names = TRUE
setzt die erste Zeile als Spaltennamen.
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE)
Das Argument col_types
kann verwendet werden, um die col_types
in den Daten als Vektor anzugeben.
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE,
col_types = c("text", "date", "numeric", "numeric"))
Lesen von Excel-Dateien mit dem RODBC-Paket
Excel-Dateien können mit dem ODBC-Excel-Treiber gelesen werden, der eine Schnittstelle zu Access Database Engine (ACE) von Windows (ehemals JET) herstellt. Mit dem RODBC-Paket kann R eine Verbindung zu diesem Treiber herstellen und Arbeitsmappen direkt abfragen. Es wird angenommen, dass Arbeitsblätter Spaltenüberschriften in der ersten Zeile mit Daten in organisierten Spalten mit ähnlichen Typen beibehalten. HINWEIS: Dieser Ansatz ist nur auf Windows / PC-Maschinen beschränkt, da JET / ACE-DLL-Dateien installiert sind und auf anderen Betriebssystemen nicht verfügbar sind.
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)
Excel-Arbeitsblätter können auf diese Weise mit einer SQL-Engine verbunden werden, ähnlich wie Datenbanktabellen einschließlich JOIN
und UNION
Operationen. Die Syntax folgt dem JET / ACE SQL-Dialekt. ANMERKUNG: Nur Datenzugriffs-DML-Anweisungen, speziell SELECT
können für Arbeitsmappen ausgeführt werden, die als nicht aktualisierbare Abfragen betrachtet werden.
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$]")
Sogar andere Arbeitsmappen können von demselben ODBC-Kanal abgefragt werden, der auf eine aktuelle Arbeitsmappe verweist:
otherwkbkdf <- sqlQuery(xlconn, "SELECT * FROM
[Excel 12.0 Xml;HDR=Yes;
Database=C:\\Path\\To\\Other\\Workbook.xlsx].[Sheet1$];")
Lesen von Excel-Dateien mit dem gdata-Paket
Beispiel hier
Lesen und Schreiben von Stata-, SPSS- und SAS-Dateien
Mit den Paketen foreign
und haven
können Dateien aus verschiedenen anderen Statistikpaketen wie Stata, SPSS und SAS sowie zugehöriger Software importiert und exportiert werden. Es gibt eine read
für jede der unterstützten Datentypen , um die Dateien zu importieren.
# loading the packages
library(foreign)
library(haven)
library(readstata13)
library(Hmisc)
Einige Beispiele für die häufigsten Datentypen:
# reading Stata files with `foreign`
read.dta("path\to\your\data")
# reading Stata files with `haven`
read_dta("path\to\your\data")
Das foreign
Paket kann in Stata (DTA) Dateien für die Versionen von Stata 7-12 lesen. Gemäß der Entwicklungsseite ist die read.dta
mehr oder weniger eingefroren und wird zum Lesen in Version 13+ nicht aktualisiert. Für neuere Versionen von Stata können Sie entweder das Paket readstata13
oder den haven
. Für readstata13
sind die Dateien
# reading recent Stata (13+) files with `readstata13`
read.dta13("path\to\your\data")
Zum Einlesen von SPSS- und SAS-Dateien
# 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
Das SAScii
Paket bietet Funktionen, die SAS SET- SAScii
akzeptieren und eine Textdatei erstellen, die mit read.fwf
verarbeitet werden read.fwf
. Es hat sich als sehr robust für den Import großer öffentlich veröffentlichter Datensätze erwiesen. Der Support ist unter https://github.com/ajdamico/SAScii verfügbar
Um Datenrahmen in andere Statistikpakete zu exportieren, können Sie die Schreibfunktionen write.foreign()
. Dadurch werden 2 Dateien geschrieben, eine mit den Daten und eine mit Anweisungen, die das andere Paket zum Lesen der Daten benötigt.
# 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")
Von der SPSS gespeicherte Datei kann auf folgende Weise mit read.spss
gelesen werden:
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.
Importieren oder Exportieren einer Federdatei
Feather ist eine Implementierung von Apache Arrow, die zum Speichern von Datenrahmen in einer sprachenunabhängigen Weise entwickelt wurde, während Metadaten (z. B. Datumsklassen) beibehalten werden, wodurch die Interoperabilität zwischen Python und R erhöht wird. Durch das Lesen einer Federdatei wird ein Halbbild erzeugt, kein Standard-Datenrahmen.
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
Die aktuelle Dokumentation enthält diese Warnung:
Hinweis für Benutzer: Feder sollte als Alpha-Software behandelt werden. Insbesondere das Dateiformat wird sich voraussichtlich im kommenden Jahr weiterentwickeln. Verwenden Sie Feather nicht zur Langzeitspeicherung von Daten.