5 – Lösungen

Statistische Datenanalyse mit R

Autor

Clemens Brunner

Veröffentlicht

6. November 2025

Übung 1

library(readr)
?read_delim

Folgende Argumente werden verwendet:

  • Spaltentrennzeichen: delim, dieses Argument folgt nach dem Dateinamen; wird es nicht angegeben, versucht die Funktion das Spaltentrennzeichen automatisch zu erkennen
  • Dezimaltrennzeichen: locale (z.B. locale=locale(decimal_mark=",") für deutsche Zahlenschreibweise)
  • Fehlende Werte: na

Übung 2

(df = read_csv2("homework.csv"))
# A tibble: 4 × 4
  category temperature   age height
  <chr>          <dbl> <dbl>  <dbl>
1 A               23.5    33   76.1
2 A               20.1    17   65.2
3 X               19.6    65   99.0
4 B               13.3    54   87.2

Die Datentypen der vier Spalten sind <chr>, <dbl>, <dbl>, <dbl> – d.h. das deutsche Zahlenformat wurde korrekt importiert.

Übung 3

wahl16 = read_csv("wahl16.csv")
round(colSums(wahl16[, -1]) / sum(wahl16[, -1]) * 100, 1)
      griss       hofer hundstorfer        khol      lugner         vdb 
       18.9        35.1        11.3        11.1         2.3        21.3 

Übung 4

covid = read_csv2("covid19.csv")
covid[["Time"]] = as.Date(covid[["Time"]], format="%d.%m.%Y")
covid
# A tibble: 12,170 × 12
   Time       Bundesland BundeslandID AnzEinwohner AnzahlFaelle AnzahlFaelleSum AnzahlFaelle7Tage SiebenTageInzidenzFa…¹
   <date>     <chr>             <dbl>        <dbl>        <dbl>           <dbl>             <dbl>                  <dbl>
 1 2020-02-26 Burgenland            1       299235            0               0                 0                 0     
 2 2020-02-26 Kärnten               2       566166            0               0                 0                 0     
 3 2020-02-26 Niederöst…            3      1708140            0               0                 0                 0     
 4 2020-02-26 Oberöster…            4      1512226            0               0                 0                 0     
 5 2020-02-26 Salzburg              5       564293            0               0                 0                 0     
 6 2020-02-26 Steiermark            6      1256890            0               0                 0                 0     
 7 2020-02-26 Tirol                 7       766492            0               0                 0                 0     
 8 2020-02-26 Vorarlberg            8       403203            0               0                 0                 0     
 9 2020-02-26 Wien                  9      1951354            1               1                 1                 0.0512
10 2020-02-26 Österreich           10      9027999            1               1                 1                 0.0111
# ℹ 12,160 more rows
# ℹ abbreviated name: ¹​SiebenTageInzidenzFaelle
# ℹ 4 more variables: AnzahlTotTaeglich <dbl>, AnzahlTotSum <dbl>, AnzahlGeheiltTaeglich <dbl>, AnzahlGeheiltSum <dbl>
dim(covid)
[1] 12170    12

Man könnte die gewünschten Spaltentypen auch direkt beim Importieren mittels col_types angeben:

covid = read_csv2("covid19.csv", col_types=cols(Time=col_date("%d.%m.%Y %H:%M:%S")))

Übung 5

(df = read_delim("household_power_consumption.zip", delim=";", na=c("?", "")))
# A tibble: 2,075,259 × 9
   Date       Time   Global_active_power Global_reactive_power Voltage Global_intensity Sub_metering_1 Sub_metering_2
   <chr>      <time>               <dbl>                 <dbl>   <dbl>            <dbl>          <dbl>          <dbl>
 1 16/12/2006 17:24                 4.22                 0.418    235.             18.4              0              1
 2 16/12/2006 17:25                 5.36                 0.436    234.             23                0              1
 3 16/12/2006 17:26                 5.37                 0.498    233.             23                0              2
 4 16/12/2006 17:27                 5.39                 0.502    234.             23                0              1
 5 16/12/2006 17:28                 3.67                 0.528    236.             15.8              0              1
 6 16/12/2006 17:29                 3.52                 0.522    235.             15                0              2
 7 16/12/2006 17:30                 3.70                 0.52     235.             15.8              0              1
 8 16/12/2006 17:31                 3.7                  0.52     235.             15.8              0              1
 9 16/12/2006 17:32                 3.67                 0.51     234.             15.8              0              1
10 16/12/2006 17:33                 3.66                 0.51     234.             15.8              0              2
# ℹ 2,075,249 more rows
# ℹ 1 more variable: Sub_metering_3 <dbl>
dim(df)  # 2.075.259 Zeilen und 9 Spalten
[1] 2075259       9

Die Spalte Date könnte man noch in einen passenderen Typ konvertieren (ist jetzt character).

Übung 6

x = c(1, 2, 3)
factor(x, levels=c(1, 2), labels=c("one", "two"))
[1] one  two  <NA>
Levels: one two

Man erkennt, dass alle Stufen, die nicht in levels enthalten sind, auch nicht im resultierenden Faktor vorkommen. Daher werden solche Werte auf NA gesetzt.