# Paket von CRAN installieren
install.packages("car")
# Paket von Github installieren
::install_github("sachseka/eatPrep", upgrade = "never") remotes
Pakete(-Installation), Workspace, Daten laden und speichern in R
1. Pakete installieren und laden
Die Funktionalität von base R
wird um ein vielfaches durch ein sehr umfangreiches Pakete-Universum ergänzt. Diese Erweiterungen werden für R
packages
oder libraries
genannt. Im Prinzip kann jeder(r) eine solche library
schreiben, deswegen ist bei der Nutzung neuer libraries
etwas Vorsicht geboten. Es gibt jedoch eine Reihe sehr weit verbreiteter und hochwertiger libraries
, deren Nutzung uneingeschränkt empfohlen werden kann.
Liegen Pakete auf CRAN
, können sie mithilfe von install.packages()
installiert werden. Pakete, die ausschließlich auf Github verfügbar sind, können über devtools::install_github()
installiert werden. Für nähere Informationen siehe auch: http://iqbstaff.pbworks.com/w/page/138429033/R-Pakete%20Installieren
Achtung: Wenn ein Paket bereits geladen ist und eine Neuinstallation dieses Pakets versucht wird, kann dies zu Fehlern führen. In diesem Fall kann entweder die R
Session neu gestartet oder das entsprechende Paket mit detach()
“entladen” werden.
Zur Verwendung von Paketen können einzelne Funktionen explizit über ihren Namespace angesprochen werden, ohne dass sie dafür explizit geladen werden müssen:
# Funktion verwenden, ohne Paket zu laden
<- c(1, 2, 1, 4)
some_data ::recode(some_data, "1 = 'a'; 2 = 'b'; 4 = 'd'") car
[1] "a" "b" "a" "d"
Oder das Paket wird vollständig geladen mithilfe des library()
Befehls
# Paket laden
library("car")
Loading required package: carData
<- c(1, 2, 1, 4)
some_data recode(some_data, "1 = 'a'; 2 = 'b'; 4 = 'd'")
[1] "a" "b" "a" "d"
Falls es mehrere Pakete gibt, die Funktionen mit demselben Namen beinhalten (zB dplyr::recode()
), kann mit car::recode()
sichergestellt werden, dass immer die gewünschte Funktion verwendet wird, auch wenn zusätzlich das Paket dplyr
geladen wird.
2. Working Directory
Wenn R
geöffnet wird (ob über die GUI oder RStudio), wird ein aktives Working Dirctory festgelegt. In diesem Ordner sucht R
dann standardmäßig nach Dateien bzw. speichert diese dort ab. Mit den Befehlen getwd()
und setwd()
kann das Working Directory ausgegeben und verändert werden.
# Working Directory ausgeben lassen
getwd()
# Working Directory ändern
setwd("t:/_R")
# Geändertes Working Directory überprüfen
getwd()
Achtung: Das Zeichen “\
” ist in R
reserviert. Um Probleme hierbei zu umgehen, kann stattdessen einfach das herkömmliche “/
” verwendet werden.
Verwendet man RStudio und öffnet eine neue RStudio-Session per Doppelklick auf eine abgespeicherte R-Syntax, wird das Working Directory automatisch in den Pfad gesetzt, in dem die Syntax liegt. Zusätzlich lässt sich das Working Directory in RStudio über ein Drop-Down Menü verändern.
Man kann Dateipfade also in relative bzw. absolute Dateipfade unterteilen:
# Working Directory und relativen Dateipfade verwenden
setwd("P:/R/03_Workshops_und_Tutorials/02_R_Einfuehrung/Material_WSIII")
<- readRDS("mtcars.RDS")
test
# Absoluten Dateipfad verwenden (das Workingdirectory ist dabei egal)
<- readRDS("P:/R/03_Workshops_und_Tutorials/02_R_Einfuehrung/Material_WSIII/mtcars.RDS") test
Wenn man in einem kleineren Projekt arbeitet und Syntaxen per Mail oder Repository austauscht (zum Beispiel einzelne Paper-Projekte mit Co-Autoren unterschiedlicher Institutionen), ist es ratsam, keine absoluten Pfade in seinen Syntaxen zu verwenden. Wenn man im Gegensatz dazu in größeren Projekten institutsintern arbeitet, in denen Datensätze auf gemeinsamen Laufwerken gespeichert sind, bietet sich die Verwendung von absoluten Pfaden an.
3. Dateien speichern und laden
In R
gibt es zwei R-spezifische Dateiformate, um Daten zu speichern: RDS
und RData
. Falls Daten nur für die Nutzung in späteren R
-Sessions benötigt werden, empfiehlt sich immer die Nutzung eines dieser Formate. Andere Formate (.csv
, xlsx.
, sav
usw.) sind im Vergleich deutlich fehleranfälliger. Zusätzlich können häufig Datensätze nicht in der exakt gleichen Formatierung wieder eingelesen werden.
saveRDS()
dient zur Speicherung eines einzelnen Objekts in R, die die Endung RDS
erhalten sollten. Beim Laden dieses Objekts wird dem Objekt ein neuer Name zugewiesen.
# Beispieldatensatz
head(mtcars)
# Objekt speichern
saveRDS(mtcars, "Material_WSIII/mtcars.RDS")
# Objekt laden
<- readRDS("Material_WSIII/mtcars.RDS")
dat # Objekt betrachten
head(dat)
save()
dient zur Speicherung eines oder (in der Regel) mehrerer Objekte auf einmal, entsprechende Dateien sollten die Endung RData
erhalten. Beim Laden dieser Objekte behalten diese ihren ursprünglichen Namen. Dies kann nervig sein, da mögliche andere Personen nicht wissen, welche Namen die gespeicherten Objekte hatten.
# Beispieldatensätze
<- mtcars
mtcars2 <- iris
iris2 # Objekte speichern (file Argument explizit benennen!)
save(mtcars2, iris2, file = "Material_WSIII/stuff.RData")
# Objekte laden
load("Material_WSIII/stuff.RData")
Ungünstig ist die Verwendung von save
bzw. load
auch deshalb, weil beim Laden dieser Objekte gegebenenfalls gleichlautende und bereits in der globalen Umgebung vorhandene Objekte überschrieben werden. Setzt man um den load
-Befehl eine Klammer, erkennt man immerhin, welche Namen die gespeicherten Objekte hatten:
# Objekte laden und hre Namen anzeigen lassen
load("Material_WSIII/stuff.RData")) (
Wenn man überprüfen möchte, wie die in der globalen Umgebung geladenen Objekte heißen, kann man mithilfe des Befehls ls()
die aktuell vorhanden Objekte in der globalen Umgebung überprüfen oder diese in RStudio unter Environment
betrachten.
# Welche Objekte liegen in der globalen Umgebung?
ls()
[1] "pandoc_dir" "quarto_bin_path" "some_data"
4. Andere Datei-Formate
.csv
Beim Speichern von comma seperated files (.csv
) können die Funktionen write.csv()
und write.csv2()
verwendet werden, wobei letztere Funktion den deutschen Excel-Konventionen (“,” als Dezimaltrenner) entspricht.
# Objekt speichern
write.csv2(mtcars, "Material_WSIII/mtcars.csv")
# Objekt laden
<- read.csv2("Material_WSIII/mtcars.csv")
dat # Objekt betrachten
head(dat)
.xlsx (Excel)
Zum Einlesen von Excel files empfiehlt sich die Funktion read_xlsx()
aus dem Paket readxl
. Achtung! Da das Paket standardmäßig einen tibble
ausgibt, eine Spezialform von data.frames
, empfiehlt sich die Umwandlung zu einem data.frame
. Da das Paket leider kein Schreiben von Excel files unterstützt, empfiehlt sich hierfür die Funktion write_xlsx()
aus dem Paket eatAnalysis
.
# Objekt speichern
::write_xlsx(mtcars, "Material_WSIII/mtcars.xlsx", row.names = FALSE)
eatAnalysis# Objekt laden
<- readxl::read_xlsx("Material_WSIII/mtcars.xlsx")
dat <- as.data.frame(dat)
dat head(dat)
.sav (SPSS)
Zum Importieren von SPSS-Dateien bietet sich das Paket eatGADS
an. Es ermöglicht das Einlesen von Daten in einem zwei-schrittigem Vorgehen. Zuerst werden die Daten eingelesen.
# sav Datei einlesen
<- eatGADS::import_spss("Material_WSIII/example.sav") spss
Diese Datei enthält sämtliche Metadaten, die auch die originale spss-Datei beinhaltet (Variablen- und Wertelabel etc.). Diese können mithilfe von extractMeta
abgefragt werden. Im Folgenden werden die Metadaten für die Variable "PJgsep_a"
abgerufen:
# sav Datei einlesen
::extractMeta(spss, "PJgsep_a") eatGADS
Um Analysen in R durchzuführen, müssen die Daten aus diesem Objekt nun mithilfe der extractData()
-Funktion extrahiert werden. Diese ermöglicht zum einen Missingcodes anzuwenden, zum anderen gelabelte Variablen entweder als numerische, character oder Faktor-Variablen auszugeben.
# sav Datei einlesen
<- eatGADS::extractData(spss, convertLabel = "character", convertMiss = TRUE)
dat head(dat)
.dta (Stata)
Stata-Datein können mithilfe des Paktes haven
sowohl gelesen als auch geschrieben werden.
# Objekt speichern
::write_dta(mtcars, "Material_WSIII/mtcars.dta")
haven# Objekt laden
<- haven::read_dta("Material_WSIII/mtcars.dta")
dat <- as.data.frame(dat)
dat head(dat)
.dat (Mplus)
Häufig möchte man in Vorbereitung von Analysen mithilfe von Mplus
Daten in R
aufbereiten. Das Paket MplusAutomation
beinhaltet die Funktion prepareMplusData()
, die das schreiben von .dat
Datein ermöglicht und zusätzlich einen Rohling für die Mplus-Analysesyntax erstellt. Außerdem beinhaltet das Paket zahlreiche Möglichkeiten verschiedene Analysen zu automatisieren.
# Objekt speichern
::prepareMplusData(mtcars, filename = "Material_WSIII/mtcars.dat") MplusAutomation
Footnotes
Image by Van Tay Media on Unsplash.↩︎