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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow