|
Explorative Datenanalyse mit
R The R Bootcamp |
|
from
unsplash.com
In diesem Practical wirst du R’s Datenklassen besser kennenlernen und das Einlesen und Schreiben von Daten üben.
Am Ende des Practicals wirst du wissen:
Öffne dein TheRBootcamp R project. Es sollte die
Ordner 1_Data und 2_Code enthalten.
Öffne ein neues R Skript. Schreibe deinen Namen, das Datum und “Daten Practical” als Kommentare an den Anfang des Skripts.
## NAME
## DATUM
## Daten Practical
Speichere das neue Skript unter dem Namen
daten_practical.R im 2_Code Ordner.
Lade die Pakete tidyverse, haven, und
readxl. Falls eines der Pakete noch nicht installiert ist,
installiere es zunächst mit
install.packages("PAKETNAME"s).
# Pakete laden
library(tidyverse)
library(haven)
library(readxl)
# Pakete laden
library(tidyverse)
library(haven)
library(readxl)
Die folgende Tabelle zeigt die Daten von fünf hypothetischenn Baselern. Im ersten Teil dieses Practicals ist es zunächst deine Aufgabe diese Tabelle Schritt für Schritt nachzubauen.
| id | geschlecht | alter | groesse | gewicht | sex |
|---|---|---|---|---|---|
| 1 | f | 87 | 165 | F | |
| 2 | m | 54 | 175 | 86 | M |
| 3 | f | 34 | 147 | 54 | F |
| 4 | m | 31 | 166 | 105 | M |
| 5 | m | 24 | 180 | 102 | M |
id,
der die id Werte der 5 Baseler Tabelle enthält. Wenn du ihn
erstellt hast, printe das Vektor-Objekt. Wann immmer du XX
siehst, bedeutet das, dass du etwas an dessen Stelle eintragen sollst.
Siehe Tabelle.# Erstelle Vektor namens id
XX <- c(XX, XX, XX, XX, XX)
# Printe den Vektor
XX
# Erstelle Vektor namens id
id <- 1:5
# Printe den Vektor
id
[1] 1 2 3 4 5
class(), um zu überprüfen welche
Klasse der id Vektor hat. Ist er numeric?# Zeige die Klasse von id
class(XX)
# Zeige die Klasse von id
class(id)
[1] "integer"
length() Funktion, um die Länge von
id zu bestimmen. Hat er die Länge 5? Wenn nicht, stelle
sicher, dass du den Vektor korrekt definiert hast.# Zeige die Länge des Vektors
length(XX)
# Zeige die Länge des Vektors
length(id)
[1] 5
geschlecht, der die entsprechenden
Werte aus der Baseler Tabelle enthält. Stelle sicher, dass du
Anführungszeichen "" um die einzelnen Elemente setzt, damit
R weiss, dass es sich um character Werte handelt. Wenn du
fertig bist, lasse dir den Vektor anzeigen.# Kreiere Vektor geschlecht
XX <- c("XX", "XX", "XX", "XX", "XX")
# Kreiere Vektor geschlecht
geschlecht <- c("m", "m", "f", "m", "m")
# Zeige den Vektor
geschlecht
[1] "m" "m" "f" "m" "m"
class() und
length(), um die Klasse (character) und die
Länge (5) zu überprüfen?# Zeige die Klasse und die Länge von geschlecht
class(geschlecht)
[1] "character"
length(geschlecht)
[1] 5
alter und
groesse durch.# Kreiere Vektor alter
alter <- c(44, 65, 31, 27, 24)
# Zeige Vektor alter
alter
[1] 44 65 31 27 24
# Zeige Klasse von Vektor alter
class(alter)
[1] "numeric"
# Zeige Länge von Vektor alter
length(alter)
[1] 5
# Kreiere Vektor groesse
groesse <- c(174, 180, 168, 209, 177)
# Zeige Vektor groesse
groesse
[1] 174 180 168 209 177
# Zeige Klasse von Vektor groesse
class(groesse)
[1] "numeric"
# Zeige Länge von Vektor groesse
length(groesse)
[1] 5
gewicht an. Du solltest sehen,
dass sie einen fehlenden Wert beinhaltet. Kreiere einen Vektor
gewicht mit denselben Schritten wie zuvor. Spezifiziere den
fehlenden Wert dabei als NA (ohne Anführungszeichen).# Kreiere Vektor gewicht
gewicht <- c(113, 75, 56, 934, NA)
# Zeige Vektor gewicht
gewicht
[1] 113 75 56 934 NA
# Zeige Klasse von Vektor gewicht
class(gewicht)
[1] "numeric"
# Zeige Länge von Vektor gewicht
length(gewicht)
[1] 5
tibblestibble(), um einen data frame
namens basel zu erstellen, der die eben erstellten Vektoren
enthält, d.h., id, alter,
geschlecht, groesse, und
gewicht.# Kreiere data frame aus den Vektoren
XX <- tibble(XX, XX, XX, XX, XX, XX)
# Kreiere data frame aus den Vektoren
basel <- data.frame(id, alter, geschlecht, groesse, gewicht)
# Print basel
basel
id alter geschlecht groesse gewicht
1 1 44 m 174 113
2 2 65 m 180 75
3 3 31 f 168 56
4 4 27 m 209 934
5 5 24 m 177 NA
summary() um deskriptive
Statistiken für die Variablen in basel zu erstellen.# Zeige deskriptive Statistiken
summary(basel)
id alter geschlecht groesse gewicht
Min. :1 Min. :24.0 Length:5 Min. :168 Min. : 56
1st Qu.:2 1st Qu.:27.0 Class :character 1st Qu.:174 1st Qu.: 70
Median :3 Median :31.0 Mode :character Median :177 Median : 94
Mean :3 Mean :38.2 Mean :182 Mean :294
3rd Qu.:4 3rd Qu.:44.0 3rd Qu.:180 3rd Qu.:318
Max. :5 Max. :65.0 Max. :209 Max. :934
NA's :1
$-Operator, um allein die Variable
alter zu printen.# Printe alter
basel$XX
# Printe alter
basel$alter
mean(), max(),
min(), und median() umd deskriptive
Statistiken direkt für die Variable alter zu berechnen# Deskriptive Statistiken für alter
mean(basel$alter)
median(basel$alter)
max(basel$alter)
min(basel$alter)
In diesem Abschnitt importierst du den bekannten
diamonds Datensatz und bearbeitest ihn.
diomands.csv Datensatz. Setze
hierzu den Cursor zwischen zwei Anführungszeichen "" und
drücke ⇥ (tab). Speichere den Filepath zunächst in einem eigenen Objekt
namens diamonds_path.# Setze den Cursor zwischen "" und drücke tab
diamonds_path <- ""
# Setze den Cursor zwischen "" und drücke tab
diamonds_path <- "1_Data/diamonds.csv"
diamonds_path in der Funktion
read_csv(), um den Datensatz einzulesen und als neues
Objekt diamonds zu speichern. (Der Umweg über das Objekt
diamonds_path ist natürlich nicht zwingend nötig. Man kann
den Filepath auch direkt als Argument einsetzen.)# Lese den diamonds Datensatz ein
diamonds <- read_csv(file = XX)
# Lese den diamonds Datensatz ein
diamonds <- read_csv(file = diamonds_path)
Rows: 99 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (4): 0.8, Very Good, H, VVS1
dbl (3): 62.9, 58, 4468
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
diamonds Datensatz. Inspiziere die
Variablennamen. Etwas stimmt nicht, oder?# Print diamonds
diamonds
# A tibble: 99 × 7
`0.8` `Very Good` H VVS1 `62.9` `58` `4468`
<chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 0.74 Ideal H IF 60.9 57 3760
2 2.03 Premium I SI1 61.4 58 15683
3 0.41 Ideal G VVS1 62.1 55 1151
4 1.54 Premium G VS1 61.1 56 14438
5 0.3 Ideal E VS2 61.8 55 795
6 0.3 Ideal H VVS2 61.5 56 605
7 1.2 Ideal D SI1 61.8 58 7508
8 0.58 Ideal E VS2 62.3 54 1809
9 0.31 Ideal H VS2 62.6 57 489
10 1.24 Very Good F VS1 59 60 9885
# … with 89 more rows
character Vektor mit Namen dem
col_names-Argument zuweist. Der Vektor soll folgende Namen
enthalten: karat, cut, farbe,
klarheit, tiefe, tabelle,
preis.# lese dimaonds nochmal ein, diesmal mit expliziten Spaltennamen
diamonds <- read_csv(file = XX,
col_names = c('XX','XX', ...))
# lese dimaonds nochmal ein, diesmal mit expliziten Spaltennamen
diamonds <- read_csv(file = diamonds_path,
col_names = c("karat", "cut", "farbe", "klarheit", "tiefe", "tabelle", "preis"))
Rows: 100 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (4): karat, cut, farbe, klarheit
dbl (3): tiefe, tabelle, preis
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# print diamonds
diamonds
# A tibble: 100 × 7
karat cut farbe klarheit tiefe tabelle preis
<chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 0.8 Very Good H VVS1 62.9 58 4468
2 0.74 Ideal H IF 60.9 57 3760
3 2.03 Premium I SI1 61.4 58 15683
4 0.41 Ideal G VVS1 62.1 55 1151
5 1.54 Premium G VS1 61.1 56 14438
6 0.3 Ideal E VS2 61.8 55 795
7 0.3 Ideal H VVS2 61.5 56 605
8 1.2 Ideal D SI1 61.8 58 7508
9 0.58 Ideal E VS2 62.3 54 1809
10 0.31 Ideal H VS2 62.6 57 489
# … with 90 more rows
Richte nun deine Aufmerksamkeit auf die Klassen der Variablen. Wurden die Klassen aller Variablen richtig inferiert?
Finde heraus was mit der karat Variable passiert
ist. Wähle die karat Variable aus und schaue dir die Werte
genau an. Zwischen dem 10. und 20. Eintrag solltest du
eine Irregularität erkennen, die dafür verantwortlich ist, dass die
Variable als character anstatt als numeric
erkannt wurde.
# Zeige die Variable Karat
diamonds$karat
[1] "0.8" "0.74" "2.03" "0.41" "1.54" "0.3" "0.3" "1.2" "0.58" "0.31"
[11] "1.24" "0.91" "1.28" "0.31" "1.02" "1" "0,37" "0.55" "0.54" "0.34"
[21] "0.91" "0.9" "0.5" "0.31" "1.66" "0.47" "0.3" "0.7" "1.72" "0.41"
[31] "1.06" "0.32" "0.4" "0.71" "0.3" "1.31" "1.08" "0.45" "0.3" "0.62"
[41] "1.01" "2" "0.38" "2.03" "1" "0.38" "0.41" "0.49" "0.71" "1.51"
[51] "1.02" "1.3" "0.32" "1.52" "0.59" "1.31" "1.05" "1.08" "0.43" "1.08"
[61] "0.3" "0.4" "0.52" "0.41" "1" "0.33" "0.75" "0.26" "0.34" "1.49"
[71] "0.3" "0.4" "0.71" "0.92" "0.7" "0.55" "1.47" "0.42" "0.58" "0.44"
[81] "0.31" "0.3" "0.55" "0.41" "0.31" "0.33" "0.32" "2.67" "0.88" "0.57"
[91] "0.36" "0.53" "0.79" "0.9" "0.31" "1.03" "0.39" "0.51" "0.34" "0.25"
karat indem du
unten im Code XX durch die Position (Zahl zwischen 10 und
20) des falschen Wertes ersetzt und YY mit dem korrekten
Wert mit . anstatt ,.# Ersetze den falschen Wert
diamonds$karat[XX] <- YY
# Ersetze den falschen Wert
diamonds$karat[17] <- 0.37
karat ist
immer noch character. Verwende die Funktion
type_convert() um dies zu beheben. Siehe unten.# Re-inferiere Datentypen
diamonds <- type_convert(diamonds)
── Column specification ────────────────────────────────────────────────────────
cols(
karat = col_double(),
cut = col_character(),
farbe = col_character(),
klarheit = col_character()
)
diamonds, um sicher zu stellen, dass
karat jetzt numeric ist, bzw. dbl
(ein Fall von numeric).# Zeige diamonds
diamonds
# A tibble: 100 × 7
karat cut farbe klarheit tiefe tabelle preis
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 0.8 Very Good H VVS1 62.9 58 4468
2 0.74 Ideal H IF 60.9 57 3760
3 2.03 Premium I SI1 61.4 58 15683
4 0.41 Ideal G VVS1 62.1 55 1151
5 1.54 Premium G VS1 61.1 56 14438
6 0.3 Ideal E VS2 61.8 55 795
7 0.3 Ideal H VVS2 61.5 56 605
8 1.2 Ideal D SI1 61.8 58 7508
9 0.58 Ideal E VS2 62.3 54 1809
10 0.31 Ideal H VS2 62.6 57 489
# … with 90 more rows
diamonds_sauber.csv mit der Funktion
write_csv().# Schreibe den sauberen diamonds Datensatz
write_csv(x = XX, path = "XX/XX.csv")
# Schreibe den sauberen diamonds Datensatz
write_csv(x = diamonds, "1_Data/diamonds_sauber.csv")
diamonds_clean.csv wieder ein und schaue dir die
Spaltennamen und die Spaltentypen an. Alles in Ordnung?# Lese den sauberen diamonds Datensatz ein
diamonds_clean <- read_csv(file = "1_Data/diamonds_sauber.csv")
mean(), median(), etc.) für die verschiedenen
Variablen. Du kannst mehr über die Variablen erfahren mit
?diamonds. (Namen sind aus dem Englischen übersetzt.)# Deskriptive Statistiken
mean(diamonds$karat)
[1] 0.742
mean(diamonds$preis)
[1] 3543
table(diamonds$cut)
Fair Good Ideal Premium Very Good
2 5 46 31 16
table(diamonds$klarheit)
I1 IF SI1 SI2 VS1 VS2 VVS1 VVS2
1 4 17 19 15 24 10 10
TRUE und
FALSE (und NAs). Kreiere einen logischen
Vektor names teuer, welcher TRUE enthält, wenn
der preis des Diamanten teurer als $10,000 ist, und
FALSE, wenn er günstiger ist. Siehe Code template# Kreiere Vektor teuer
ZZ <- diamonds$XX > YY
# Kreiere Vektor teuer
teuer <- diamonds$preis > 10000
teuer Vektor. Er sollte nur
TRUE und FALSE enthalten. Falls ja, decken
sich die ersten Werte in preis mit den Werten in
teuer?# Print teuer
teuer
[1] FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
[49] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
[73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[85] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[97] FALSE FALSE FALSE FALSE
teuer.# Ergänze Vektor
XX$YY <- ZZ
# Ergänze Vektor
diamonds$teuer <- teuer
table(), um auszuzählen wie viele
Diamanten teuer sind. Benutze hierzu wiederum den
$-Operator um die Variable auszuwählen.# Zähle die teuren Diamanten
table(diamonds$teuer)
FALSE TRUE
92 8
mean() Funktion, um auszuzählen welcher
Anteil teuer ist. Erinnere, mean() funktioniert auch mit
logischen Vektoren.# Anteil teuerer Diamanten
mean(diamonds$teuer)
[1] 0.08
> oder
<, als auch die mean() Funktion, um zu
bestimmen welcher Anteil Diamanten mehr als 1 Karat besitzt.# Anteil Diamanten mit karat > 1
mean(diamonds$karat > 1)
[1] 0.26
![]()
In diesem Abschnitt liest du den ebenfalls sehr bekannten
titanic Datensatz aus einem Excel Format und speicherst die
Daten als .csv.
read_excel() Funktion, um den Datensatz
titanic.xls als ein neues Objekt titanic
einzulesen.# Lese titanic.xls
titanic <- read_excel(path = "XX")
# Lese titanic.xls
titanic <- read_excel("1_Data/titanic.xls")
titanic und evaluiere die Ausmasse des
Datensatzes mit dim().# Printe und evaluiere Ausmasse
titanic
# A tibble: 1,309 × 14
pclass survived name sex age sibsp parch ticket fare cabin embarked
<dbl> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl> <chr> <chr>
1 1 1 Allen, … fema… 29 0 0 24160 211. B5 S
2 1 1 Allison… male 0.917 1 2 113781 152. C22 … S
3 1 0 Allison… fema… 2 1 2 113781 152. C22 … S
4 1 0 Allison… male 30 1 2 113781 152. C22 … S
5 1 0 Allison… fema… 25 1 2 113781 152. C22 … S
6 1 1 Anderso… male 48 0 0 19952 26.6 E12 S
7 1 1 Andrews… fema… 63 1 0 13502 78.0 D7 S
8 1 0 Andrews… male 39 0 0 112050 0 A36 S
9 1 1 Appleto… fema… 53 2 0 11769 51.5 C101 S
10 1 0 Artagav… male 71 0 0 PC 17… 49.5 <NA> C
# … with 1,299 more rows, and 3 more variables: boat <chr>, body <dbl>,
# home.dest <chr>
dim(titanic)
[1] 1309 14
table() um auszuzählen wie viele Leute das
Unglück der Titanic überlebt haben (Variable
survived).# Wie viele haben überlebt?
table(titanic$XX)
# Wie viele haben überlebt?
table(titanic$XX)
< table of extent 0 >
table(), um auszuzählen wie viele
Leute in jeder der einzelnen Passagierklassen (Variable
pclass) das Unglück der Titanic überlebt haben.# Wie viele haben pro Passagierklasse überlebt?
table(titanic$XX, titanic$XX)
# Wie viele haben pro Passagierklasse überlebt?
table(titanic$pclass, titanic$survived)
0 1
1 123 200
2 158 119
3 528 181
write_csv(), um den Datensatz
titanic als .csv auf in deinen
1_Data Ordner zu schreiben.# Schreiben Daten als .csv
write_csv(x = titanic,
path = "1_Data/titanic.csv")

In diesem Abschnitt liest du den sleep Datensatz,
welcher Informationen über das Schlafverhalten der Mitarbeiter der
Universität Melbourne enthält, aus einem SPSS-Format ein und speicherst
die ihn im .csv-Format.
read_spss() Funktion, um den Datensatz
sleep.sav als ein neues Objekt sleep
einzulesen.XX <- read_spss(file = "XX")
# Lese sleep Daten
sleep <- read_spss(file = "1_Data/sleep.sav")
sleep und evaluiere die Ausmasse des Datensatzes
mit dim(). Du wirst sehen, R war so clever die Labels der
Variablen mit zu übernehmen.# Printe und evaluiere Ausmass
sleep
# A tibble: 271 × 55
id sex age marital edlevel weight height healthrate fitrate
<dbl> <dbl+lb> <dbl> <dbl+lbl> <dbl+lbl> <dbl> <dbl> <dbl+lbl> <dbl+l>
1 83 0 [fema… 42 2 [marri… 2 [secondary… 52 162 10 [very … 7
2 294 0 [fema… 54 2 [marri… 5 [postgradu… 65 174 8 7
3 425 1 [male] NA 2 [marri… 2 [secondary… 89 170 6 5
4 64 0 [fema… 41 2 [marri… 5 [postgradu… 66 178 9 7
5 536 0 [fema… 39 2 [marri… 5 [postgradu… 62 160 9 5
6 57 0 [fema… 66 2 [marri… 4 [undergrad… 62 165 8 8
7 251 0 [fema… 36 1 [singl… 3 [trade tra… 62 165 9 7
8 255 0 [fema… 35 2 [marri… 5 [postgradu… 75 174 6 6
9 265 1 [male] NA 2 [marri… 5 [postgradu… 90 180 6 6
10 290 1 [male] 41 2 [marri… 5 [postgradu… 75 187 9 9
# … with 261 more rows, and 46 more variables: weightrate <dbl+lbl>,
# smoke <dbl+lbl>, smokenum <dbl>, alchohol <dbl>, caffeine <dbl>,
# hourwnit <dbl>, hourwend <dbl>, hourneed <dbl>, trubslep <dbl+lbl>,
# trubstay <dbl+lbl>, wakenite <dbl+lbl>, niteshft <dbl+lbl>,
# liteslp <dbl+lbl>, refreshd <dbl+lbl>, satsleep <dbl+lbl>,
# qualslp <dbl+lbl>, stressmo <dbl+lbl>, medhelp <dbl+lbl>,
# problem <dbl+lbl>, impact1 <dbl+lbl>, impact2 <dbl+lbl>, impact3 <dbl+lbl>,
# impact4 <dbl+lbl>, impact5 <dbl+lbl>, impact6 <dbl+lbl>, impact7 <dbl+lbl>,
# stopb <dbl+lbl>, restlss <dbl+lbl>, drvsleep <dbl+lbl>, drvresul <dbl+lbl>,
# ess <dbl>, anxiety <dbl>, depress <dbl>, fatigue <dbl>, lethargy <dbl>,
# tired <dbl>, sleepy <dbl>, energy <dbl>, stayslprec <dbl+lbl>,
# getsleprec <dbl+lbl>, qualsleeprec <dbl+lbl>, totsas <dbl>,
# cigsgp3 <dbl+lbl>, agegp3 <dbl+lbl>, probsleeprec <dbl+lbl>,
# drvslprec <dbl+lbl>
dim(sleep)
[1] 271 55
mean() Funktion um auszuzählen wie viele
alkoholische Getränke die Mitarbeiter im Durchschnitt pro Tag zu sich
nehmen (Variable alchohol; Typo im Originaldatensatz).
Achte auf etwaige fehlende Werte!# Berechne die mittlere Anzahl drinks
mean(x = sleep$alchohol, na.rm = TRUE)
[1] 1
write_csv() um den Datensatz
sleep als .csv auf in deinen
1_Data Ordner zu schreiben.# Schreibe Daten als .csv
write_csv(x = sleep,
path = "1_Data/sleep.csv")
library(tidyverse)
library(readxl)
library(haven)
# Kreiere Vektoren für (falsche) Aktiendaten
name <- c("apple", "microsoft", "dell", "google", "twitter")
gestern <- c(100, 89, 65, 54, 89)
heute <- c(102, 85, 72, 60, 95)
# Deskriptive Statistiken
mean(heute)
mean(gestern)
# Zeige Klassen
class(name)
class(gestern)
# Rechne mit Vektoren
change <- heute - gestern
change # Printe Resultat
# Verwende einen logischen Vektor
increase <- heute > gestern
increase # Printe Resultat
# Kreiere einen tibble aus den Vektoren
stocks <- tibble(name, gestern, heute, change, increase)
# Zeige Spaltennamen
names(stocks)
# Wähle Variablen aus
stocks$name
stocks$today
# Berechne deskriptive Werte
mean(stocks$yesterday)
median(stocks$today)
table(stocks$increase)
max(stocks$increase)
# Lese/Schreibe Delimiter-separierte Werte -------------------
# lese chickens Daten
chickens <- read_csv(file = "1_Data/chickens.csv")
# Korrigiere die Spaltennamen
chickens <- read_csv(file = "1_Data/chickens_nohead.csv",
col_names = c("weight", "time", "chick", "diet"))
# Korrigiere NA Werte beim einlesen
chickens <- read_csv(file = "1_Data/chickens_na.csv",
na = c('NA', 'NULL'))
# Schreibe saubere Daten
write_csv(x = chickens,
path = "1_Data/chickens_sauber.csv")
# Korrogiere einzelne Werte -------------------
# remove character from rating
survey$beurteilung[survey$beurteilung == "2,1"] <- 2.1
# Re-inferiere die Datentypen
survey <- type_convert(survey)
# Andere Formate -------------------
# .xlsx (Excel)
chickens <- read_excel("1_Data/chickens.xlsx")
# .sav (SPSS)
chickens <- read_spss("1_Data/chickens.sav")
library(tidyverse)
library(readxl)
library(haven)
| Datei | Zeilen | Spalten | Beschreibung |
|---|---|---|---|
| diamonds.csv | 100 | 7 | Bestandteil aus dem bekannten diamonds
Datensatz, welcher die Eigenschaften und Preise einer grossen Anzahl
Diamanten enthält. |
| titanic.xls | 1309 | 14 | Daten über die Überlebenden und Verstorbenen des Titanic Unglücks. |
| sleep.sav | 271 | 55 | Survey über das Schlafverhalten der Mitarbeiter der Universität Melbourne. |
| Paket | Installation |
|---|---|
tidyverse |
install.packages("tidyverse") |
haven |
install.packages("haven") |
readxl |
install.packages("readxl") |
Kreiere Vektoren
| Funktion | Beschreibung |
|---|---|
c("a", "b", "c") |
Kreiere character Vektor |
c(1, 2, 3) |
Kreiere numeric Vektor |
c(TRUE, FALSE, TRUE) |
Kreiere logical Vektor |
Vektor Funktionen
| Funktion | Beschreibung |
|---|---|
mean(x), median(x), sd(x), sum(x) |
Mittelwert, Median, Standardabweichung, Summe |
max(x), min(x) |
Maximum, Minimum |
table(x) |
Höufigkeitstabelle |
Zugriff auf Variablen in Data Frames
| Funktion | Beschreibung |
|---|---|
df$name |
Greife auf Variable (Vektor) name aus dem
data frame df zu |
Lese/Schreibe Textdateien
| Dateiendung | Dateityp | Lesen | Schreiben |
|---|---|---|---|
.csv |
Komma-separierte Textdatei | read_csv(file) |
write_csv(x, file) |
.csv |
Semi-colon separierte Textdatei | read_csv2(file) |
not available |
.txt |
Andere Textdatei | read_delim(file) |
write_delim(x, file) |
Lese/Schreibe andere Formate
| Dateiendung | Dateityp | Lesen | Schreiben |
|---|---|---|---|
.xls, .xlsx |
Excel | read_excel(file) |
xlsx::write.xlsx() |
.sav |
SPSS | read_spss(file) |
write_spss(x, file) |
Kreiere data frames
| Function | Description |
|---|---|
tibble(a, b, c) |
Kreiere tibble data frame mit den Vektoren
a, b, c |
tibbles, Daten Lesen und Schreiben schaut
euch Grolemund`s und Wickham’s R for Data Science
an.