11  Daten transformieren

Neben ggplot2 ist dplyr ein sehr wichtiger Bestandteil der tidyverse Paketsammlung. Die Funktionen des Pakets dplyr dienen dazu Daten zu analysieren und aufzuarbeiten, das heißt in eine geeignete Form zu bekommen um diese entweder grafisch oder tabellarisch darzustellen oder aus ihnen Kenngrößen zu berechnen. Wir wollen in diesem Kapitel die Funktionsweise der in Tabelle 11.1 aufgeführen Funktionen anhand diverser Beispiele erläutern.

Tabelle 11.1: Auswahl Funktionen aus dem Paket dplyr
Kategorie Funktion Bedeutung
Zeilen filter() Beobachtungen (Zeilen) nach vorgegebenen Kriterien filtern
arrange() Beobachtungen (Zeilen) sortieren
Spalten select() Merkmale (Spalten) auswählen
mutate() Merkmale (Spalten) (aus ggf. bereits vorhandenen) neu erstellen bzw. vorhandene ändern
rename() Umbenennen von Merkmalen (Spalten)
relocate() Ändern der Stellung eines Merkmals (Spalte)
Gruppierungen summarise() Anzahlen und statistische Kenngrößen berechnen
group_by() Gruppierungen nach Faktorstufen vornehmen, wird oft in Verbindung mit summarise verwendet
slice_min() Zeigt n (gruppierte) Beobachtungen, wobei die kleinsten bezüglich eines Merkmals angezeigt werden
slice_max() Zeigt n (gruppierte) Beobachtungen, wobei die größten bezüglich eines Merkmals angezeigt werden
slice_head() Zeigt n (gruppierte) Beobachtungen, wobei die ersten der Datentabelle angezeigt werden
slice_tail() Zeigt n (gruppierte) Beobachtungen, wobei die letzten der Datentabelle angezeigt werden
slice_sample() Zeigt n zufällige (gruppierte) Beobachtungen
WichtigMerke

Ein Teil der Syntax der dplyr Befehle ist bei allen obigen Funktionen gleich!

  • alle Funktionen operieren auf einer Datentabelle, das heißt das erste Argument jeder Funktion ist .data= (also eine Datentabelle!)
  • das Ergebnis der jeweiligen Funktion ist wieder eine Datentabelle.

Diese Eigenschaften der dplyr-Funktionen ermöglichen es, Daten mit Hilfe des Pipe-Operators |> sehr leicht aufzuarbeiten, da die aus einer Operation resultierende Datentabelle wieder in eine Funktion geschoben werden kann.

  • Werden Argumenten direkt Merkmalsnamen zugewiesen, so werden diese ohne Anführungszeichen geschrieben.

11.1 Der Datensatz nycflights

Um die obigen Funktionen zu verstehen werden wir den Datensatz flights aus dem Paket nycflights13 nutzen. Der Datensatz enthält alle Flüge, die im jahr 2013 von New Yorker Flughäfen abgeflogen sind. Insgesamt hat dieser Datensatz 19 Merkmale und 336,776 Beobachtungen. Eine detaillierte Übersicht zu den Merkmalen gibt es in der Hilfe.

library(pacman)
p_load(tidyverse, nycflights13)

flights
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

In einer Datentabelle, die im Tibble-Format abgespeichter ist, kann man den Kurznamen des jeweiligen Datentypen unterhalb des Merkmalnamens sehen. Eine kurze Überischt über eine Datentabelle (Merkmalsnamen, Datentypen, Dimensionen und die ersten Einträge) enhält man auch mit dem Befehl glimpse (aus aus dem Paket dplyr).

glimpse(flights)
Rows: 336,776
Columns: 19
$ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
$ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558, …
$ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600, …
$ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1…
$ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849,…
$ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851,…
$ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -1…
$ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", "…
$ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, 4…
$ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N394…
$ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA",…
$ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD",…
$ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 1…
$ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733, …
$ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6…
$ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0…
$ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 0…

Man sieht damit auf den ersten Blick die Dimensionen der Datentabelle, sowie alle Merkmalsnamen und Merkmalstypen sowie die ersten Einträge der jeweiligen Merkmale.

11.2 Datentypen

Wir haben in den letzten Kapiteln bereits die (atomaren) Datentypen logical, integer, double und character kennengelernt. An der Datentabelle nycflights sehen wir, dass es noch weitere Typen gibt. Wir wollen in diesem Kapitel ein wenig Struktur in die Datentypen bringen und die atomaren Datentypen von den zusammengestzten Daten, die wir auch Datenstrukturen nennen abgrenzen.

11.2.1 Atomare Datentypen

In der Tabelle 11.2 sind die sechs atomaren Datentypen mit den Kurznamen, wie sie in einem Tibble auftauchen, sowie Beispielen aufgeführt.

Tabelle 11.2: In R gibt es sechs verschiedene atomare Datentypen. Alle anderen Datentypen bzw. Datenstrukturen werden aus diesen zusammengesetzt. Der Typ raw ist nur der Vollständigkeit aufgeführt und wird im Wesentlichen nicht benötigt. Der raw-Typ sind nicht interpretierte Speicherwerte.
Name Kurzname Erklärung Beispiele
logical <lgl> Logischer Ausdruck TRUE, T, FALSE, F
integer <int> ganze Zahlen 2, 4L, -7
double <dbl> Fließkommazahlen 1.2, pi, 3e-7
complex <cpl> Komplexe Zahlen 2+3i, 0-1i
character <chr> Zeichenketten "Haus", "K2", "110_112"
raw <raw> Rohdaten (Byte-Darstellung) (selten!) as.raw(255)

Vektoren sind die zugrunde liegende Strukturform in der Daten
Mit der Funktion typeof() können wir bei einem R-Objekt den Datentyp herausfinden.

x <- c("Angela", "Pamela", "Sandra", "Rita")
typeof(x)
[1] "character"

11.2.2 Kategoriale und geordnete Typen

(Geordnete) Faktoren benötigt man immer dann, wenn es für ein Merkmal endlich viele bekannte und feste Ausprägungen, den Levels, gibt. Wir weden uns in Kapitel 15 noch damit beschäftigen.

Name Kurzname Erklärung Beispiele
factor <fct> Kategoriale Merkmale mit festen Levels "rot", "blau", "grün"
ordered <ord> Geordnete kategoriale Merkmale "klein" < "mittel" < "groß"

11.2.3 Zeitbezogene Typen

Name Kurzname Erklärung Beispiele
📅 date <date> Datum (ohne Zeit) as.Date("2023-09-22")
datetime <dttm> Datum und Uhrzeit (POSIXct) asPOSIXct("2025-10-21 11:20:00")
difftime <difftime> Zeitdifferenz zwischen zwei Daten/Zeitpunkten difftime(Sys.time(), start)
📈 ts (time series) <ts> Zeitreihenobjekt mit fester Frequenz ts(1:10, start=2020, freq=4)

11.2.4 Zusammengesetzte Datenstrukturen

Name Kurzname Erklärung Beispiele
📚 list <list> Sammlung beliebiger Objekte (heterogen) list(1, "a", TRUE)
🧮 matrix <mtrx> 2D-Array gleichen Datentyps matrix(1:6, ncol=2)
🧊 array <arr> Mehrdimensionale Datenstruktur gleichen Typs array(1:8, dim=c(2,2,2))
📊 data.frame <df> Tabellarische Struktur mit Spalten unterschiedlichen Typs data.frame(x=1:3, y=c("a","b","c"))
📘 tibble <tbl> Moderne Variante von data.frame (tidyverse) tibble(x=1:3, y=c("a","b","c"))

11.3 Die Funktion filter()

Beobachtungen (Zeilen) filtern mit filter()

filter(flights, month == 10, day == 3) 

oder in der praktischen Pipe-Schreibweise, die wir ab nun immer verwenden werden:

flights |> filter(month == 10, day == 3)
# A tibble: 995 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    10     3      453            500        -7      636            648
 2  2013    10     3      512            517        -5      739            757
 3  2013    10     3      541            545        -4      826            855
 4  2013    10     3      541            545        -4      920            933
 5  2013    10     3      546            545         1      822            827
 6  2013    10     3      546            550        -4      917            932
 7  2013    10     3      550            600       -10      646            708
 8  2013    10     3      550            600       -10      844            858
 9  2013    10     3      552            600        -8      651            659
10  2013    10     3      552            600        -8      656            711
# ℹ 985 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
  • Mit der Funktion filter() werden Beobachtungen (Zeilen) nach gewissen Auswahlkriterien gefiltert.
  • Im Beispiel oben werden alle Beobachtungen, bei denen month gleich 10 und day gleich 3 ist, gefiltert, also alle Flüge, die am 03. Oktober stattgefunden haben.

Im Kapitel 5.5 wurde bereits die Syntax des Pipe-Operators |> eingeführt. Im Zusammenhang mit den Funktionen des Pakets dplyr bietet sich diese Syntax besonders an: das erste Argument der dplyr-Funktionen ist eine Datentabelle und auch das Ergebnis einer dplyr-Funktion ist wieder eine Datentabelle.

11.3.1 Zuweisung und Ausgabe nach filter()

# Zuweisung ohne Ausgabe der Datentabelle
jan01  <- flights |> filter(month == 1, day == 1)

# Zuweisung mit Ausgabe der Datentabelle: () um die Zuweisung setzen:
(jul14  <- flights |> filter(month == 7, day == 14))
# A tibble: 931 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     7    14        6           2359         7      355            344
 2  2013     7    14      112           2359        73      447            340
 3  2013     7    14      456            500        -4      635            640
 4  2013     7    14      525            525         0      737            756
 5  2013     7    14      537            540        -3      828            840
 6  2013     7    14      542            515        27      712            720
 7  2013     7    14      549            600       -11      654            715
 8  2013     7    14      551            600        -9      646            655
 9  2013     7    14      553            600        -7      834            851
10  2013     7    14      554            600        -6      725            752
# ℹ 921 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

11.3.2 Vergleiche

Tabelle 11.3: Vergleiche. Das Ergebnis eines Vergleichs ist ein logischer Vektor.
Symbol Bedeutung
== gleich
!= ungleich
> größer als
>= größer als oder gleich
< kleiner als
<= kleiner als oder gleich

Um filtern zu können, ist es wichtig, die Vergleichsoperatoren zu verstehen. Das Ergebnis eines Vergleichs ist ein logischer Wert, das heißt TRUE, FALSE oder aber NA, was für Not Available steht.

Beispiele

3 >= 2
[1] TRUE
0 > -3:2           # Recycling
[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE
5 != c(2, 5, NA)   # Recycling
[1]  TRUE FALSE    NA
WarnungAchtung

Beim Vergleich von Fließkommazahlen mit == können Fehler auftreten, daher gibt es hier die Funktionen near() im dplyr-Paket bzw. all.equal() aus dem base-Paket. Diese prüfen ob die Differenz der beiden Werte kleiner als etwa 1.5\cdot 10^{-8} ist.

Schon einfache Rechnungen können beim Vergleich von Fließkommazahlen mit == zu Fehlern führen:

1.7 + 2.4 - 3.1  == 1
[1] FALSE
near(1.7 + 2.4 - 3.1, 1)      # oder 
[1] TRUE
all.equal(1.7 + 2.4 - 3.1, 1)
[1] TRUE

Daher sollten wir immer darauf achten, den Vergleichsoperator == bei Fließkommazahlen zu vermeiden und statt dessen die Funktion near() (auch aus dem Paket dplyr) zu verwenden.

Auch logische Vektoren oder Zeichenketten können verglichen werden.

TRUE != FALSE
[1] TRUE
c("A") == c("A", "B", "A")
[1]  TRUE FALSE  TRUE
HinweisAufgabe: Vergleiche

Was liefern die folgenden Vergleiche? Überlegen Sie sich zuerst das Ergebnis und überprüfen Sie es danach mit R, und denken sie an die Recycling Regel!

1:10 >= 3
1:10 == 6
1:10 != 6
1:10 != c(1,6) 
1:10 != c(2,6) 

11.3.3 Logische Operatoren

Oft sind wir in der Situation, dass man Beobachtungen nach mehr als einem Merkmal filtern möchte: im ersten Beispiel wurde das Datum nach Monat und nach einem Tag gefiltert. Mit Hilfe der Methoden der Aussagenlogik, die in Kapitel 18 behandelt wird, kann man auch kompliziertere Auswahlen treffen.

Erklärung an Beispielen:

Die Venn-Diagramme sind in gewissen Sinn allgemeingültig und auf alle Fälle anwendbar, wobei Segmente (es gibt insgesamt vier) auch leer sein könnten. Die rechteckige Box repräsentiert alle Beobachtungen; der Kreis in dem x steht repräsentiert alle Beobachtungen bei dem ein Merkmal die Ausprägung x hat, und analog ist der Kreis mit dem y ein (ggf. anderes) Merkmal, bei dem die Ausprägung y ist.

Rechts neben den Venn-Diagrammen ist ein jeweils ein Beispiel zu finden: der Datensatz flights enthält alle Beobachtung (das Rechteck, die Grundmenge), x sind alle Flüge, die an einem 3. eines Monats geflogen sind (day == 3) und y sind alle Flüge, die im 10. Monat geflogen sind (month == 10).

Abbildung 11.1: Venn Diagramm von x
flights |> filter(day == 3)
Abbildung 11.2: Venn Diagramm von !x (\neg x)

Negation (NICHT):

flights |> filter(!(day == 3)) 
# oder
flights |> filter(day != 3)
Abbildung 11.3: Venn Diagramm von x|y (x \vee y)

Disjunktion (ODER):

flights |> 
  filter(day == 3 | month == 10) 
Abbildung 11.4: Venn Diagramm von x&y (x \wedge y)

Konjunktion (UND):

flights |> 
   filter(day == 3, month == 10) 
# oder
flights |> 
   filter(day == 3 & month == 10) 
  • Man sieht die Wirkung der boolschen Operatoren & (UND, Konjunktion), | (ODER, Disjunktion), sowie ! (NICHT, Negation).
  • Die Negation bindet stärker als die Konjunktion und diese wiederum stärker als die Disjunktion. Deswegen müssen ggf. runde Klammern gesetzt werden.

Beispiele:

Der folgenden beiden Ausdrücke filtern alle Flüge, die im November oder Dezember stattgefunden haben:

flights |> filter(month == 11 | month == 12)
# A tibble: 55,403 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    11     1        5           2359         6      352            345
 2  2013    11     1       35           2250       105      123           2356
 3  2013    11     1      455            500        -5      641            651
 4  2013    11     1      539            545        -6      856            827
 5  2013    11     1      542            545        -3      831            855
 6  2013    11     1      549            600       -11      912            923
 7  2013    11     1      550            600       -10      705            659
 8  2013    11     1      554            600        -6      659            701
 9  2013    11     1      554            600        -6      826            827
10  2013    11     1      554            600        -6      749            751
# ℹ 55,393 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
flights |> filter(month %in% c(11, 12))
# A tibble: 55,403 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013    11     1        5           2359         6      352            345
 2  2013    11     1       35           2250       105      123           2356
 3  2013    11     1      455            500        -5      641            651
 4  2013    11     1      539            545        -6      856            827
 5  2013    11     1      542            545        -3      831            855
 6  2013    11     1      549            600       -11      912            923
 7  2013    11     1      550            600       -10      705            659
 8  2013    11     1      554            600        -6      659            701
 9  2013    11     1      554            600        -6      826            827
10  2013    11     1      554            600        -6      749            751
# ℹ 55,393 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>
  • Der zweite Ausdruck ist eine praktische Abkürzung: x %in% y liefert einen Vektor aus Wahrheitswerten, dessen Einträge genau dann TRUE sind, wenn die entsprechende x-Komponente in y enthalten ist. Zusammen mit der Funktion filter() werden dann die entsprechenden Beobachtungen gefiltert.

  • Oft können komplizierte Ausdrücke durch die De Morganschen Regeln vereinfacht werden. Diese lauten:

    • !(x & y) ist das gleiche wie !x | !y

    • !(x | y) ist das gleiche wie !x & !y

Diese drei Ausdrücke filtern alle Flüge, die weder bei der Ankunft noch beim Abflug mehr als zwei Stunden Verspätung hatten:

flights |> filter(!(arr_delay > 120 | dep_delay > 120))
flights |> filter(arr_delay <= 120, dep_delay <= 120)
flights |> filter(arr_delay <= 120 & dep_delay <= 120)
  • Die Funktion between() ist eine intuitive Abkürzung für zwei Ungleichungen. Die folgenden beiden Ausdrücke sind damit gleich:
flights |> filter(between(arr_delay, 10, 30))
flights |> filter(arr_delay >= 10, arr_delay <= 30)

Durch welche logischen Operationen kann der eingefärbte Teil ausgewählt werden?

Die Operatorrangfolge wurde bereits in Kapitel 5.1.3 besprochen. Allerdings sind wir bei den Beispielen nicht auf die logischen Verknüpfungen eingegangen.

TRUE | FALSE & FALSE
[1] TRUE
(TRUE | FALSE) & FALSE
[1] FALSE

In diesem Beispiel kann man sehen, dass UND & stärker bindet als ODER |.

HinweisAufgabe: Filtern mit logischen Ausdrücken

Beschreiben Sie in einem korrekten deutschen Satz welche Flüge jeweils durch die folgenden Ausdrücke in der resultierende Datentabelle stehen.

# i.)
flights |> filter(air_time >= 120 & air_time <= 180)

# ii.)
flights |> filter(month %in% c(7,8,9))

# iii.)
flights |> filter((month == 3) | (day == 4)) 

# iv.)
flights |> filter(!month <= 10) 
HinweisAufgabe: der Operator %in%

Gegeben sind die beiden Vektoren:

x <- c("Anna", "Bertha", "Carla", "Dieter", "Peter")
y <- c("Bertha", "Dieter", "Kralle", "Stephan") 

Überlegen Sie sich, was die folgdenen Ausdrücke liefern. Überprüfen Sie danach ihr Ergebnis und erklären Sie dieses!

x %in% y
y %in% x

11.3.4 Fehlende Werte

  • Anders als z.B. bei Excel-Tabellen, in denen Zellen leer sein können, gibt es in de R-Datentabellen keine Leereinträge.
  • Statt dessen gibt es den Eintrag NA (Not Available).
  • Mit der Funktion is.na() kann nach NA-Einträgen gesucht werden. Die Funktion liefert TRUE falls ein Eintrag NA ist und FALSE falls dies nicht der Fall ist.
  • Damit kann auch nach NA Werten gefiltert werden, z.B.
(df <- tibble(x = c(2, 1, NA, 5, NA)))
# A tibble: 5 × 1
      x
  <dbl>
1     2
2     1
3    NA
4     5
5    NA
df |> filter(is.na(x) | x > 3)
# A tibble: 3 × 1
      x
  <dbl>
1    NA
2     5
3    NA

Hier noch ein paar wichtige Beispiele, wie sich NA bei Vergleichen verhält.

NA >= -1
[1] NA
NA == NA
[1] NA
(x <- c(2, NA, 5, NA))
[1]  2 NA  5 NA
[1] FALSE  TRUE FALSE  TRUE
# Summation über einen Vektor mit NAs:
sum(x)
[1] NA
sum(x, na.rm = TRUE)  # ignoriert NAs
[1] 7
HinweisAufgabe: NAs

Betrachte die Datentabelle flights.

  • Bei wie vielen Flügen aus dem Datensatz ist die Abflugzeit nicht bekannt?
  • Bei wie vielen Flügen aus dem Datensatz ist die Ankunftszeit nicht bekannt?
  • Bei wie vielen Flügen sind beide nicht bekannt?

Nutzen Sie die Funktion count().

11.4 Sortieren mit arrange()

Mit Hilfe der Funktion arrange() kann man Zeilen sortieren. Analog zu filter() kann arrange() mehrere Argumente (nach der Datentabelle) haben, wobei die Reihenfolge hierarchisch ist, das heißt es wird zuerst nach der ersten angegebenen Variablen sortiert, dann innerhalb dieser nach der zweiten usw.

  • Die Ordnung ist aufsteigend, möchte man eine absteigende Ordnung erreichen, so muss die Funktion desc() genutzt werden.

  • Fehlende Werte (NA) werden in beiden Fällen ans Ende gesetzt.

Beispiel:

Im folgenden Beispiel wird zuerst absteiged nach Verspätung und dann aufsteigend nach Ziellughafen sortiert.

flights |> arrange(desc(dep_delay), dest)
# A tibble: 336,776 × 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     9      641            900      1301     1242           1530
 2  2013     6    15     1432           1935      1137     1607           2120
 3  2013     1    10     1121           1635      1126     1239           1810
 4  2013     9    20     1139           1845      1014     1457           2210
 5  2013     7    22      845           1600      1005     1044           1815
 6  2013     4    10     1100           1900       960     1342           2211
 7  2013     3    17     2321            810       911      135           1020
 8  2013     6    27      959           1900       899     1236           2226
 9  2013     7    22     2257            759       898      121           1026
10  2013    12     5      756           1700       896     1058           2020
# ℹ 336,766 more rows
# ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
#   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
#   hour <dbl>, minute <dbl>, time_hour <dttm>

11.5 Merkmale (Spalten) auswählen mit select()

  • Insbesonders bei sehr großen Datentabellen mit ggf. hunderten Merkmalen ist es sinnvoll, die Anzahl der Merkmale zu reduzieren oder in eine besser geeignete Reihenfolge zu bringen.
  • Dies geschieht mit dem Befehl select().
  • Neben explizitem Auflisten der Merkmalsnamen sind auch verkürzte Formen der folgenden Form möglich:
# alle Merkmale von year bis day:
flights |> select(year:day)
# A tibble: 336,776 × 3
    year month   day
   <int> <int> <int>
 1  2013     1     1
 2  2013     1     1
 3  2013     1     1
 4  2013     1     1
 5  2013     1     1
 6  2013     1     1
 7  2013     1     1
 8  2013     1     1
 9  2013     1     1
10  2013     1     1
# ℹ 336,766 more rows
# alle Merkmale außer die von year bis day:
flights |> select(-(year:day))
# A tibble: 336,776 × 16
   dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier
      <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>  
 1      517            515         2      830            819        11 UA     
 2      533            529         4      850            830        20 UA     
 3      542            540         2      923            850        33 AA     
 4      544            545        -1     1004           1022       -18 B6     
 5      554            600        -6      812            837       -25 DL     
 6      554            558        -4      740            728        12 UA     
 7      555            600        -5      913            854        19 B6     
 8      557            600        -3      709            723       -14 EV     
 9      557            600        -3      838            846        -8 B6     
10      558            600        -2      753            745         8 AA     
# ℹ 336,766 more rows
# ℹ 9 more variables: flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
#   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
# die Merkmale 1 bis 6 , 8 und 12 auswählen:
flights |> select(c(1:6, 8, 12))
# A tibble: 336,776 × 8
    year month   day dep_time sched_dep_time dep_delay sched_arr_time tailnum
   <int> <int> <int>    <int>          <int>     <dbl>          <int> <chr>  
 1  2013     1     1      517            515         2            819 N14228 
 2  2013     1     1      533            529         4            830 N24211 
 3  2013     1     1      542            540         2            850 N619AA 
 4  2013     1     1      544            545        -1           1022 N804JB 
 5  2013     1     1      554            600        -6            837 N668DN 
 6  2013     1     1      554            558        -4            728 N39463 
 7  2013     1     1      555            600        -5            854 N516JB 
 8  2013     1     1      557            600        -3            723 N829AS 
 9  2013     1     1      557            600        -3            846 N593JB 
10  2013     1     1      558            600        -2            745 N3ALAA 
# ℹ 336,766 more rows
flights |> select(year, month, day, dest)
# A tibble: 336,776 × 4
    year month   day dest 
   <int> <int> <int> <chr>
 1  2013     1     1 IAH  
 2  2013     1     1 IAH  
 3  2013     1     1 MIA  
 4  2013     1     1 BQN  
 5  2013     1     1 ATL  
 6  2013     1     1 ORD  
 7  2013     1     1 FLL  
 8  2013     1     1 IAD  
 9  2013     1     1 MCO  
10  2013     1     1 ORD  
# ℹ 336,766 more rows

11.5.1 Die tidyselect-Funktionen

Das Paket tidyselect, das nicht zusätzlich installiert oder geladen werden muss, stellt einige praktische Hilfsfunktionen zu Verfügung, die man innerhalb von select() nutzen kann um auf einfache Weise Merkmalsnamen zu selektieren, die ein bestimmtes Muster haben.

  • starts_with(): wählt alle Merkmale aus, die mit einer bestimmten Zeichenfolge beginnen
flights |> select(starts_with("dep_"), 
                  starts_with("arr_"))
# A tibble: 336,776 × 4
   dep_time dep_delay arr_time arr_delay
      <int>     <dbl>    <int>     <dbl>
 1      517         2      830        11
 2      533         4      850        20
 3      542         2      923        33
 4      544        -1     1004       -18
 5      554        -6      812       -25
 6      554        -4      740        12
 7      555        -5      913        19
 8      557        -3      709       -14
 9      557        -3      838        -8
10      558        -2      753         8
# ℹ 336,766 more rows
  • ends_with(): wählt alle Merkmale aus, die mit einer bestimmten Zeichenfolge enden
flights |> select(ends_with("time"))
# A tibble: 336,776 × 5
   dep_time sched_dep_time arr_time sched_arr_time air_time
      <int>          <int>    <int>          <int>    <dbl>
 1      517            515      830            819      227
 2      533            529      850            830      227
 3      542            540      923            850      160
 4      544            545     1004           1022      183
 5      554            600      812            837      116
 6      554            558      740            728      150
 7      555            600      913            854      158
 8      557            600      709            723       53
 9      557            600      838            846      140
10      558            600      753            745      138
# ℹ 336,766 more rows
  • contains(): wählt alle Merkmale, die eine bestimmte Zeichenkettenfolge enthalten, wobei es keine Rolle spielt, an welcher Stelle diese steht:
flights |> select(contains("time"))
# A tibble: 336,776 × 6
   dep_time sched_dep_time arr_time sched_arr_time air_time time_hour          
      <int>          <int>    <int>          <int>    <dbl> <dttm>             
 1      517            515      830            819      227 2013-01-01 05:00:00
 2      533            529      850            830      227 2013-01-01 05:00:00
 3      542            540      923            850      160 2013-01-01 05:00:00
 4      544            545     1004           1022      183 2013-01-01 05:00:00
 5      554            600      812            837      116 2013-01-01 06:00:00
 6      554            558      740            728      150 2013-01-01 05:00:00
 7      555            600      913            854      158 2013-01-01 06:00:00
 8      557            600      709            723       53 2013-01-01 06:00:00
 9      557            600      838            846      140 2013-01-01 06:00:00
10      558            600      753            745      138 2013-01-01 06:00:00
# ℹ 336,766 more rows

num_range(): wählt nummerierte Merkmale aus, z.B. wählt das untere Beispiel aus dem unten erstellten Datensatz df die Merkmale x1 und x3 aus.

(df <- tibble(x1 = 1:3, x2 = 11:13, 
              x3 = 21:23, x4 = 31:33,
              y1 = 22:24))
# A tibble: 3 × 5
     x1    x2    x3    x4    y1
  <int> <int> <int> <int> <int>
1     1    11    21    31    22
2     2    12    22    32    23
3     3    13    23    33    24
df |> select(num_range("x", c(1,3)))
# A tibble: 3 × 2
     x1    x3
  <int> <int>
1     1    21
2     2    22
3     3    23

Bemerkung

Es ist immer darauf zu achten, dass der String innerhalb der Funktion in Anführungszeichen steht!

HinweisAufgabe: Merkmale auswählen

Laden Sie das Paket DA.students um den Datensatz dat.studenten nutzen zu können. Nutzen Sie bei dieser Aufgabe die tidyselect-Funktionen und verwenden Sie konsequent den Pipe-Operator. Alle Aufgaben gehen immer vom Datensatz dat.studenten aus und sind unabhängig.

  1. Selektieren Sie aus dem Datensatz die Merkmale, die mit Alter beginnen, sowie die Wohnform.
  2. Selektieren Sie aus dem Datensatz die Merkmale, die das Wort Mathe oder Alter enthalten.

11.6 Die Funktion mutate()

11.6.1 Neue Merkmale (Spalten) erstellen

  • Mit der Funktion mutate() können neue Merkmale zu einem Datensatz hinzugefügt werden, die oft aus existierenden Merkmalen gewonnen werden.
  • Im unteren Beispiel werden die Merkmale gain, hours und speed berechnet.
  • Neu erzeugte Variablen können sofort verwendet werden (hier: hours für speed.
(flights_sml <- flights |> 
               select(year:day, 
                      ends_with("delay"), 
                      distance, 
                      air_time ) |> 
               mutate(gain = dep_delay - arr_delay, 
                      hours = air_time / 60,
                      speed = distance / hours))
# A tibble: 336,776 × 10
    year month   day dep_delay arr_delay distance air_time  gain hours speed
   <int> <int> <int>     <dbl>     <dbl>    <dbl>    <dbl> <dbl> <dbl> <dbl>
 1  2013     1     1         2        11     1400      227    -9 3.78   370.
 2  2013     1     1         4        20     1416      227   -16 3.78   374.
 3  2013     1     1         2        33     1089      160   -31 2.67   408.
 4  2013     1     1        -1       -18     1576      183    17 3.05   517.
 5  2013     1     1        -6       -25      762      116    19 1.93   394.
 6  2013     1     1        -4        12      719      150   -16 2.5    288.
 7  2013     1     1        -5        19     1065      158   -24 2.63   404.
 8  2013     1     1        -3       -14      229       53    11 0.883  259.
 9  2013     1     1        -3        -8      944      140     5 2.33   405.
10  2013     1     1        -2         8      733      138   -10 2.3    319.
# ℹ 336,766 more rows

Bemerkung zum obigen Beispiel:

Die Funktion select() im obigen Beispiel hat lediglich die Funktion die Datentabelle nicht zu breit werden zu lassen. Daher habe ich nicht notwendige Spalten herausgefiltert.

HinweisAufgabe: Merkmale erstellen

Laden Sie das Paket DA.students um den Datensatz dat.studenten nutzen zu können.

  1. Erstellen Sie ein neues Merkmal: GroesseMeter bei dem die Körpergröße in Metern und nicht in Zentimetern angegeben ist.
  2. Erstellen Sie ein neues Merkmal MatheNoteGanz bei dem die Mathenote auf eine ganze Zahl gerundet wird.

11.6.2 Die Funktion transmute

  • Die Funktion transmute() funktioniert prinzipiell genau wie die Funktion mutate(), allerdings werden nur die neu erzeugten Merkmale behalten.
  • Merkmale der ursprünglichen Datentabelle können einfach übernommen werden. Wird kein neuer Name angegeben, so bleibt der alte bestehen (hier: distance).
flights |>  transmute(distance,
                      gain = dep_delay - arr_delay, 
                      hours = air_time / 60,
                      speed = distance / hours)
# A tibble: 336,776 × 4
   distance  gain hours speed
      <dbl> <dbl> <dbl> <dbl>
 1     1400    -9 3.78   370.
 2     1416   -16 3.78   374.
 3     1089   -31 2.67   408.
 4     1576    17 3.05   517.
 5      762    19 1.93   394.
 6      719   -16 2.5    288.
 7     1065   -24 2.63   404.
 8      229    11 0.883  259.
 9      944     5 2.33   405.
10      733   -10 2.3    319.
# ℹ 336,766 more rows

11.6.3 Die Funktion rename()

  • Mit der Funktion rename() können eine oder mehrere, durch Komma getrennte Merkmale, umbenannt werden. Dabei steht der neue Name vor dem Gleichheitszeichen, der alte nach dem Gleichheitszeichen.
flights |> select(contains("time")) |>
           rename(flight_time = air_time,
                  date_time = time_hour)
# A tibble: 336,776 × 6
   dep_time sched_dep_time arr_time sched_arr_time flight_time
      <int>          <int>    <int>          <int>       <dbl>
 1      517            515      830            819         227
 2      533            529      850            830         227
 3      542            540      923            850         160
 4      544            545     1004           1022         183
 5      554            600      812            837         116
 6      554            558      740            728         150
 7      555            600      913            854         158
 8      557            600      709            723          53
 9      557            600      838            846         140
10      558            600      753            745         138
# ℹ 336,766 more rows
# ℹ 1 more variable: date_time <dttm>
HinweisAufgabe: Merkmale umbenennen

Laden Sie das Paket DA.students um die Datentabelle dat.studenten zu nutzen. Benennen Sie in einem Schritt die Merkmale AlterV bzw. AlterM in AlterVater bzw. AlterMutter um, sowie NoteMathe in MatheNote und MatheZufr in MatheZufriedenheit.

11.6.4 Einzelne Merkmale ändern mit mutate()

Merkmale können mit der Funktion mutate() auch geändert / bearbeitet werden.

## Ändern des Merkmals distance von km in m:
# Überschreiben des alten Merkmals durch Zuweisung = : 
(flights_sml |> mutate(distance = distance * 1000) |> 
                slice_head(n = 3))
# A tibble: 3 × 10
   year month   day dep_delay arr_delay distance air_time  gain hours speed
  <int> <int> <int>     <dbl>     <dbl>    <dbl>    <dbl> <dbl> <dbl> <dbl>
1  2013     1     1         2        11  1400000      227    -9  3.78  370.
2  2013     1     1         4        20  1416000      227   -16  3.78  374.
3  2013     1     1         2        33  1089000      160   -31  2.67  408.
# Mit across() und einer Funktion (empfohlen!):
# Die Einträge von distance werden mit Hilfe der Funktion geändert
(flights_sml |> mutate(across(distance, function(x) {x*1000}))|> 
                slice_head(n = 3))
# A tibble: 3 × 10
   year month   day dep_delay arr_delay distance air_time  gain hours speed
  <int> <int> <int>     <dbl>     <dbl>    <dbl>    <dbl> <dbl> <dbl> <dbl>
1  2013     1     1         2        11  1400000      227    -9  3.78  370.
2  2013     1     1         4        20  1416000      227   -16  3.78  374.
3  2013     1     1         2        33  1089000      160   -31  2.67  408.

Bemerkungen:

  • Die Funktion innerhalb der Funktion across() muss genau ein Argument haben. Das Argument darf einen beliebigen Namen haben.

  • Hat eine Funktion mehrere benötigte oder genutzte Argumente, so erstellt man einen neue Funktion, die nur noch von einem Argument abhängig ist.

  • Statt function(x) kann seit der R-Version 4.1 auch die abkürzende Schreibweise \(x) benutzt werden, wobei ein beliebiges Argument benutzt werden kann, das heißt das Argument muss nicht x heißen.

  • Ist die Funktion, die innerhalb der Funktion across() auf die Merkmale angewendet werden soll, komplizierter (also länger) oder wird sie mehrfach benötigt, so ist es ratsam diese zuvor außerhalb des Pipe-Ausdrucks zu definieren. Achten Sie dabei auf die Syntax:

    • der Code der Funktion muss in geschweifte Klammern gesetzt werden,
    • macht die Funktion mehr als eine einfache Rechnung, so muss einen Rückgabewert mit der Funktion mit der Funktion return() angegeben werden.

Beispiel

Es soll eine Funktion geschrieben werden, die das gleiche macht wie die Funktion sum(), aber der Standard soll sein NAs zu ignorieren.

x <- c(1, 2, 3, 4, NA)

sum(x) 
[1] NA
sum(x, na.rm = TRUE)
[1] 10
sum_new <- function(x) {
             sum(x, na.rm = TRUE)}
sum_new(x)
[1] 10
sum_new2 <- \(x) {sum(x, na.rm = TRUE)}
sum_new2(x)
[1] 10

11.6.5 Mehrere Merkmale ändern mit mutate()

  • In vielen Fällen ist es erforderlich, dass man mehrere Merkmale auf die gleiche Art und Weise ändern möchte.
  • Dies gelingt mit Hilfe der Funktion across() sowie den Auswahlfunktionen aus dem tidyselect, die bereits im Abschnitt über die Funktion select() beschrieben wurden.

Beispiele:

Wir betrachten als Beispiel die folgende Datentabelle

umfrage
# A tibble: 3 × 6
  Name      X1    X2 Y1       X3 Y2   
  <chr>  <dbl> <dbl> <chr> <dbl> <chr>
1 Anton      1     1 Ja        2 ja   
2 Bert       3     2 Nein      5 Ja   
3 Celina     5     4 ja        3 Nein 

Folgende Änderungen möchten wir nun mit Hilfe der Funktion mutate() vornehmen:

  • Bei den numerischen Merkmalen X1, X2 und X3 wollen wir von jedem Wert 1 abziehen. * Bei den Merkmalen deren Ausprägung ja bzw. nein sind wollen die Groß- und Kleinschreibung vereinheitlichen.
# Von den metrischen Merkmalen 1 abziehen:

umfrage |> mutate(across(starts_with("X"), 
                         \(n) {n-1}))
# A tibble: 3 × 6
  Name      X1    X2 Y1       X3 Y2   
  <chr>  <dbl> <dbl> <chr> <dbl> <chr>
1 Anton      0     0 Ja        1 ja   
2 Bert       2     1 Nein      4 Ja   
3 Celina     4     3 ja        2 Nein 

Erklärung: Innerhalb der Funktion across() stehen zwei Argumente:

  • das erste Argument gibt an welche Spalten geändert werden sollen, dabei sind die tidyselect-Funktionen, wie zum Beispiel starts_with(), ends_with(), contains()etc. erlaubt. Da genau die zu änderndern Merkmale mit X beginnen bietet sich die obige Möglichkeit der Änderung an.

  • Das zweite Argument ist eine Funktion. Diese kann entweder bereits bestehen oder selbst geschrieben werden, wie im obigen Beispiel. Dabei ist \(n) {n-1} das Gleiche wie function(n) {n-1}. Diese Funktion wird auf alle Merkmale (Spalten), die ausgewählt wurden, angewendet.

# "ja" zu "Ja" konvertieren:

hilfe <- \(x) {ifelse(x == "ja", "Ja", x)}

umfrage |> mutate(across(where(is.character), hilfe))
# A tibble: 3 × 6
  Name      X1    X2 Y1       X3 Y2   
  <chr>  <dbl> <dbl> <chr> <dbl> <chr>
1 Anton      1     1 Ja        2 Ja   
2 Bert       3     2 Nein      5 Ja   
3 Celina     5     4 Ja        3 Nein 

Zuerst haben wir uns die Funktion hilfe() definiert. In der Funtion across() steht nun, dass die Funktion hilfe() alle Merkmale (Spalten) angewendet wird, die vom Typ Character, also Zeichenketten, sind.

Im obigen Fall wäre das auch das Merkmal Name, was man an der Stelle ggf. nicht haben möchte (aber egal ist, da ja nicht als Ausprägung im Merkmal Name vorkommt). Andere Möglichkeiten um in der obigen Tabelle die Merkmale Y1 und Y2 auf die gewünschte Art zu ändern wären:

umfrage |> mutate(across(starts_with("Y"), hilfe))
umfrage |> mutate(across(contains("Y"), hilfe))
umfrage |> mutate(across(num_range("Y",1:2), hilfe))

Wichtige Bemerkung:

Wenn Sie im Internetz nach Hilfe suchen, werden Sie verschiedene Syntaxen für die Verwendung der Funktion across() finden. Die folgenden Schreibweisen liefern das gleiche Ergebnis:

hilfe <- \(x) {ifelse(x == "ja", "Ja", x)}
umfrage |> mutate(across(where(is.character), 
                               hilfe))

# ist das gleiche wie 
umfrage |> mutate(across(where(is.character), 
                         function(x) {ifelse(x == "ja", "Ja", x)}))

# oder kurz
umfrage |> mutate(across(where(is.character), 
                         \(x) {ifelse(x == "ja", "Ja", x)}))


# oder (und das ist konzeptionell ein wenig anders, und veraltet!)
umfrage |> mutate(across(where(is.character), 
                         ~ifelse(.x == "ja", "Ja", .x)))

Wesentliche Unterschiede des letzten Aufrufs:

  • Vor der anzuwendende Funktion (hier: ifelse()) in der Funktion across() steht eine Tilde.
  • Der Funktion können alle Argumente mitgegeben werden.
  • Das Argument, das sich auf die Spalten, die geändert werden sollen bezieht, muss .x heißen!

Bemerkungen:

  • Der Ausdruck innerhalb der Funktion where(), ist selbst eine Funktion (hier: is.character(), hat aber keine Klammern! (siehe Hilfe where() im tidyselect).

  • Die Funktion is.character() ist TRUE, falls das Argument (Vektor) eine Zeichenkette ist, sonst FALSE. Zum jedem Daten- / Objekttyp gibt es analoge Funktionen wie zu, Beispiel is.numeric() (integer und double), is.double(), is.integer(), is.logical(), etc.

VorsichtDie Auswahlfunktion ifelse()

Die Funktion ifelse(test, yes, no) hat drei notwendige Argumente:

  • test= ist das erste Argument. Es ist eine Abfrage, die einen logischen Vektor liefern muss.
  • Hat der Eintrag in test den Wahrheitswert TRUE, so wird der Eintrag in yes=ausgegeben,
  • ist der Wahrheitswert FALSE, so wird der Eintrag in no= ausgegeben.

Beispiel 1: bei Vektoren

x <- 1:6 
y <- 3
ifelse(x < y, "x kleiner als y", "x nicht kleiner y")
[1] "x kleiner als y"   "x kleiner als y"   "x nicht kleiner y"
[4] "x nicht kleiner y" "x nicht kleiner y" "x nicht kleiner y"

Beispiel 2: mit mutate() in Datentabelle

tib <- tibble(x = 1:6, y = 3)
tib
# A tibble: 6 × 2
      x     y
  <int> <dbl>
1     1     3
2     2     3
3     3     3
4     4     3
5     5     3
6     6     3
tib |> mutate(ausgabe = ifelse(x < y, 
                         "x ist kleiner als y", 
                         "x ist nicht kleiner als y"))
# A tibble: 6 × 3
      x     y ausgabe                  
  <int> <dbl> <chr>                    
1     1     3 x ist kleiner als y      
2     2     3 x ist kleiner als y      
3     3     3 x ist nicht kleiner als y
4     4     3 x ist nicht kleiner als y
5     5     3 x ist nicht kleiner als y
6     6     3 x ist nicht kleiner als y

11.6.6 Kombinieren von Merkmalen mehrerer Spalten

Es kommt vor, dass wir neue Merkmale erstellen wollen, die sich aus anderen Merkmalen zusammensetzen. In einfachen Fällen, wie in Kapitel 11.6.1 kann man dies durch arithmetische Operationenin denen die benötigten Merkmale direkt genannt werden erledigen. Möchten wir Funktionen wie sum(), mean() oder median() etc. nutzen, so funktioniert dies nicht ohne weiteres, wie das folgende Beispiel zeigt.

daten 
# A tibble: 11 × 5
      x1    x2    y1    x3    y2
   <dbl> <dbl> <dbl> <dbl> <dbl>
 1     1     1     1     1     1
 2     2     0     3     3     2
 3     8     0     3     3     5
 4     2     2     4     2     0
 5     1     6     4     4     4
 6     1     1     4     3     2
 7     2     5     4     3     0
 8     6     4     4     2     2
 9     4     2     4     4     2
10     3     1     4     3     2
11     4     3     3     4     1
daten |> mutate(z1 = x1+x2+x3, 
                z2 = sum(c(x1,x2,x3))
                )
# A tibble: 11 × 7
      x1    x2    y1    x3    y2    z1    z2
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1     1     1     1     1     1     3    91
 2     2     0     3     3     2     5    91
 3     8     0     3     3     5    11    91
 4     2     2     4     2     0     6    91
 5     1     6     4     4     4    11    91
 6     1     1     4     3     2     5    91
 7     2     5     4     3     0    10    91
 8     6     4     4     2     2    12    91
 9     4     2     4     4     2    10    91
10     3     1     4     3     2     7    91
11     4     3     3     4     1    11    91

Was man am obigen Beispiel sieht ist, dass beim Merkmal z1 genau das passiert, was man erwartet, nämlich eine zeilenweise Addition der Merkmale x1, x2, x3. Mit der funktion sum() funktioniert dies nicht in der gewünschten Form. Hier werden alle Zahlen aus x1, x2 und x3 addiert.

Es gibt nun aber die Möglichkeit auch zeilenweise Operationen auszuführen, die zum einen Funktionen zulassen und zum anderen auch eine Auswahl der Merkmale mit den tidyselect-Funktionen. Dazu benötigen wir das Funktionenpaar rowwise() und c_across().

Somit könnte das obige Beispiel in der folgenden Form geschrieben werden.

daten |> rowwise() |> 
         mutate(z2 = sum(c_across(starts_with("x")))
                )
# A tibble: 11 × 6
# Rowwise: 
      x1    x2    y1    x3    y2    z2
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1     1     1     1     1     1     3
 2     2     0     3     3     2     5
 3     8     0     3     3     5    11
 4     2     2     4     2     0     6
 5     1     6     4     4     4    11
 6     1     1     4     3     2     5
 7     2     5     4     3     0    10
 8     6     4     4     2     2    12
 9     4     2     4     4     2    10
10     3     1     4     3     2     7
11     4     3     3     4     1    11

Die beiden Funktionen rowwise() und c_across() werden immer gemeinsam verwendet, wenn man zeilenweise operieren möchte. Die Funktion c_across() ist der Funktion c() sehr ähnlich, mit dem Unterschied, dass c_across() auch tidyselect-Auswahlen akzeptiert.

HinweisAufgabe: Zeilenweise Auswertung von Daten

Importieren Sie den semikolonseparierten Datensatz umfrage2024.csv. Erstellen Sie drei neue Merkmale.

  1. Berechnen Sie die zweilenweise Summe der Merkmale, die im Namen _num enthalten, sowie deren Standardabweichung (mit der Funktion sd()).
  2. Erstellen Sie ein Merkmal, das genau dann TRUE ist, wenn alle Merkmale, die _log enthalten, TRUE sind (zeilenweise). Hierbei könnte die Funktion all() helfen.

Der Übersicht halber selektieren wir nur die wichtigen Spalten: vorher um zu sehen welche Daten man nutzt und im zweiten Teil um zu sehen wie das Ergebnis aussieht. Im Wirklichkeit würde man dies natürlich nicht so machen.

umfrage2024 |> select(contains("_log"), contains("_num")) 
# A tibble: 50 × 8
   Frage01_log Frage02_log Frage03_log Frage04_num_invers Frage05_num_invers
   <lgl>       <lgl>       <lgl>                    <dbl>              <dbl>
 1 TRUE        FALSE       FALSE                        5                  3
 2 FALSE       TRUE        TRUE                         2                  4
 3 TRUE        FALSE       FALSE                        3                  2
 4 TRUE        TRUE        TRUE                         4                  5
 5 FALSE       TRUE        TRUE                         5                  1
 6 TRUE        TRUE        TRUE                         5                  4
 7 FALSE       FALSE       TRUE                         4                  2
 8 TRUE        FALSE       FALSE                        3                  5
 9 TRUE        FALSE       FALSE                        3                  2
10 TRUE        FALSE       FALSE                        4                  2
# ℹ 40 more rows
# ℹ 3 more variables: Frage06_num <dbl>, Frage07_num <dbl>,
#   Frage08_num_invers <dbl>
umfrage2024 |> rowwise() |> 
               mutate(Summe = sum(c_across(contains("_num"))),
                      SD = sd(c_across(contains("_num"))),
                      ALL = all(c_across(contains("_log")))
                      ) |> 
               select(Summe, SD, ALL)
# A tibble: 50 × 3
# Rowwise: 
   Summe    SD ALL  
   <dbl> <dbl> <lgl>
 1    16 1.48  FALSE
 2    18 1.14  FALSE
 3    13 1.14  FALSE
 4    19 1.64  TRUE 
 5    11 1.64  FALSE
 6    15 1.58  TRUE 
 7    14 1.64  FALSE
 8    16 1.48  FALSE
 9    16 1.79  FALSE
10    13 0.894 FALSE
# ℹ 40 more rows

11.7 Kenngrößen von Gruppen berechnen

summarise() und group_by()

  • Mit der Funktion summarise() (oder auch summarize()) ist es möglich, die Datentabelle auf eine einzelne Zeile zu reduzieren.
flights |> summarise(delay = mean(dep_delay, 
                                  na.rm = TRUE))
# A tibble: 1 × 1
  delay
  <dbl>
1  12.6
  • Im obigen Beispiel wird das arithmetische Mittel mean() der Verspätungen beim Abflug über alle Flüge berechnet, wobei fehlende Einträge ignoriert wurden (na.rm = TRUE).

  • Mit der Funktion group_by() können Gruppen gebildet werden (genau genommen wird die Datentabelle zu einer gruppierten Datentabelle). Die Funktion summarise() operiert nun auf den Gruppen.

Beispiel 1

flights |> group_by(month) |> 
           summarise(delay = mean(dep_delay,  na.rm = TRUE))
# A tibble: 12 × 2
   month delay
   <int> <dbl>
 1     1 10.0 
 2     2 10.8 
 3     3 13.2 
 4     4 13.9 
 5     5 13.0 
 6     6 20.8 
 7     7 21.7 
 8     8 12.6 
 9     9  6.72
10    10  6.24
11    11  5.44
12    12 16.6 

In diesem Beispiel wird nach den Ausprägungen des Merkmals month gruppiert. Danach wird bezüglich dieser Gruppen jeweils das arithmetische Mittel gebildet.

Es ist zu bemerken, dass die resultierende Datentabelle immer alle Merkmale hat, die

  • in der Funktion group_by() stehen,
  • in der Funktion summarise() gebildet werden.

Beispiel 2

Es ist möglich nach mehreren Merkmalen gleichzeitig zu gruppieren. Im folgenden Beispiel werden 365 Gruppen begildet.

# Gruppieren nach mehreren Merkmalen: 

flights |> group_by(month, day) |> 
            summarise(delay = mean(dep_delay,  na.rm = TRUE))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by month and day.
ℹ Output is grouped by month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 3
# Groups:   month [12]
   month   day delay
   <int> <int> <dbl>
 1     1     1 11.5 
 2     1     2 13.9 
 3     1     3 11.0 
 4     1     4  8.95
 5     1     5  5.73
 6     1     6  7.15
 7     1     7  5.42
 8     1     8  2.55
 9     1     9  2.28
10     1    10  2.84
# ℹ 355 more rows

Bemerkung

Die resultierende Datentabelle ist immer noch bezüglich des Montas gruppiert, wohingegen die Gruppierung aufgrund der Funktion summarise() nicht mehr vorhanden ist, da auf der Ebene die Mittelwertbildung stattgefunden hat: in der resultierenden Datentabelle gibt es jede Ausprägung des Merkmals day genau einmal.

11.7.1 Darstellen gruppierter Daten:

Die folgende Grafik ist ein typisches Beispiel dafür, wie aus einer Datentabelle eine Grafik entsteht, wobei die dargestellten Größen aus der Datentabelle berechnet werden.

flights |> group_by(dest) |>
           summarise(count = n(),
                     dist = mean(distance, na.rm = TRUE),
                     delay = mean (arr_delay, na.rm = TRUE)) |>
           filter (count > 20, dest != "HNL") |>
           ggplot(aes(x = dist, y = delay)) + 
                geom_point(aes(size = count), alpha = 1/3) +
                geom_smooth(se = FALSE) +
           labs(x = "Distanz", y = "Mittlere Verspätung")
Abbildung 11.5: Durchschnittliche Verspätungen der Flüge in Abhängigkeit vom Ort (der Distanz). Die Größe der Punkte gibt die Anzahl der betrachteten Flüge an.

Der Pipe-Operator macht diese Operationen von links nach rechts lesbar:

  • Zuerst werden die Flüge nach Zielflughafen gruppiert.

  • Dann werden die interessanten statistischen Merkmale bezüglich der zuvor gebildeten Gruppen aggregiert.

    • Anzahl der Flüge,
    • durchschnittliche Flugdistanz,
    • durchschnittliche Verspätung bei der Ankunft.
  • Danach werden einige Flüge ausgeschlossen (d.h. herausgefiltert): nämlich zum einen die Flughäfen, die in dem Jahr 20 oder weniger Anflüge hatten und zum anderen die Flüge nach Honululu, da die entfernung da hin sehr viel weiter ist als alle anderen.

  • Zuletzt werden die aggregierten Kenngrößen in einer Grafik mit verschiedenen Schichten dargestellt.

Um das Erstellen von Abbildung 11.5 zu verdeutlichen, soll die generierte Datentabelle noch einmal isoliert betrachtet werden:

flights |> 
    group_by(dest) |>
    summarise(count = n(),
              dist = mean(distance, na.rm = TRUE),
              delay = mean (arr_delay, na.rm = TRUE))
# A tibble: 105 × 4
   dest  count  dist delay
   <chr> <int> <dbl> <dbl>
 1 ABQ     254 1826   4.38
 2 ACK     265  199   4.85
 3 ALB     439  143  14.4 
 4 ANC       8 3370  -2.5 
 5 ATL   17215  757. 11.3 
 6 AUS    2439 1514.  6.02
 7 AVL     275  584.  8.00
 8 BDL     443  116   7.05
 9 BGR     375  378   8.03
10 BHM     297  866. 16.9 
# ℹ 95 more rows
  • Die mit der Funktion summarise() erstellten Merkmale beziehen sich alle auf die gruppierten Daten. Daher ist das erste Merkmal der generierten Datentabelle dest.
  • Das zweite Merkmal ist count, erstellt mit der Funktion n(). Diese zählt, wie oft jede Ausprägung des Merkmals dest in der ursprünglichen Datentabelle flights vorkommt.
  • Die Merkmale dist und delay sind die arithmetischen Mittel der Merkmale distance und arr_delay innerhalb jeder Gruppe, also für jeden Zielflughafen. In beidem Fällen werden fehlende Werte ignoriert (na.rm = TRUE).

11.7.2 Gruppieren nach mehreren Merkmalen

daily <- flights |> group_by(year, month, day)
  • Jede Zusammenfassung mit summarise() entfernt die oberste Ebene der Gruppierungen.
  • Damit können schrittweise Zusammenfassungen je Gruppierungsebenen erstellt werden.
(per_day <- daily |> 
     summarise(flights = n()))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year, month, and day.
ℹ Output is grouped by year and month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 4
# Groups:   year, month [12]
    year month   day flights
   <int> <int> <int>   <int>
 1  2013     1     1     842
 2  2013     1     2     943
 3  2013     1     3     914
 4  2013     1     4     915
 5  2013     1     5     720
 6  2013     1     6     832
 7  2013     1     7     933
 8  2013     1     8     899
 9  2013     1     9     902
10  2013     1    10     932
# ℹ 355 more rows
(per_month <- per_day |> 
     summarise(flights = sum(flights)))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year and month.
ℹ Output is grouped by year.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, month))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 12 × 3
# Groups:   year [1]
    year month flights
   <int> <int>   <int>
 1  2013     1   27004
 2  2013     2   24951
 3  2013     3   28834
 4  2013     4   28330
 5  2013     5   28796
 6  2013     6   28243
 7  2013     7   29425
 8  2013     8   29327
 9  2013     9   27574
10  2013    10   28889
11  2013    11   27268
12  2013    12   28135
(per_year <- per_month |> 
     summarise(flights = sum(flights)))
# A tibble: 1 × 2
   year flights
  <int>   <int>
1  2013  336776

11.7.3 Gruppierungen aufheben: ungroup()

flights |> 
     group_by(year, month, day) |> 
     ungroup() |> 
     summarise(flights = n())  
# A tibble: 1 × 1
  flights
    <int>
1  336776
  • Mit Hilfe der Funktion ungroup() können Gruppierungen aufgehoben werden.
  • Wird ungroup() ohne eine Argument verwendet, so werden alle Gruppierungen aufgehoben.
flights |> 
     group_by(year, month, day) |>
     ungroup(year, day) |> 
     summarise(flights = n())  
# A tibble: 12 × 2
   month flights
   <int>   <int>
 1     1   27004
 2     2   24951
 3     3   28834
 4     4   28330
 5     5   28796
 6     6   28243
 7     7   29425
 8     8   29327
 9     9   27574
10    10   28889
11    11   27268
12    12   28135

11.7.4 Filtern mit Gruppenwerten: group_by() und filter()

Im Beispiel rechts werden für jeden Tag die beiden Flüge mit der größten Ankunfts-Verspätung ermittelt.

flights |> group_by(year, month, day) |>
     filter(rank(desc(arr_delay)) <= 2) |>
     select(year, month, day, flight)
# A tibble: 722 × 4
# Groups:   year, month, day [365]
    year month   day flight
   <int> <int> <int>  <int>
 1  2013     1     1   3944
 2  2013     1     1   4321
 3  2013     1     2    179
 4  2013     1     2    488
 5  2013     1     3   2027
 6  2013     1     3   3459
 7  2013     1     4    179
 8  2013     1     4   3805
 9  2013     1     5   3521
10  2013     1     5   1109
# ℹ 712 more rows
  • Im Beispiel rechts oben werden alle Flüge von Flughäfen mit mehr als 17000 Landungen im Jahr ermittelt.
flights |>
  group_by(dest) |>
  filter(n() > 17000) |>
  select(year, month, day, flight, dest)
# A tibble: 34,498 × 5
# Groups:   dest [2]
    year month   day flight dest 
   <int> <int> <int>  <int> <chr>
 1  2013     1     1    461 ATL  
 2  2013     1     1   1696 ORD  
 3  2013     1     1    301 ORD  
 4  2013     1     1   4650 ATL  
 5  2013     1     1   1743 ATL  
 6  2013     1     1   3768 ORD  
 7  2013     1     1    575 ATL  
 8  2013     1     1    303 ORD  
 9  2013     1     1    305 ORD  
10  2013     1     1   1547 ATL  
# ℹ 34,488 more rows
  • Im Beispiel rechts unten werden alle Flüge ermittelt, die eine Ankunftsverspätung haben, die um mehr als das Dreifache der Standardabweichung vom Durchschnitt des Zielflughafens abweicht.
flights |>
  group_by(dest) |>
  filter( arr_delay > mean(arr_delay) + 3*sd(arr_delay) ) |>
  select(dest, year, month, day, flight, tailnum, arr_delay)
# A tibble: 5 × 7
# Groups:   dest [1]
  dest   year month   day flight tailnum arr_delay
  <chr> <int> <int> <int>  <int> <chr>       <dbl>
1 ABQ    2013    10    15     65 N640JB        138
2 ABQ    2013    12    14     65 N659JB        149
3 ABQ    2013    12    17     65 N556JB        136
4 ABQ    2013     7    22   1505 N784JB        153
5 ABQ    2013     7    23   1505 N589JB        137

11.7.5 Fehlende Werte: NA

  • Fehlende Werte (NA) in einer Datentabelle können dazu führen, dass statistische Aggregationen als Ergebnis NA liefern.

  • Davon sind unter anderem die Funktionen sum()(Summe), mean() (arithmetisches Mittel), median() (Median), var() (Varianz) und sd()(Standardabweichung) betroffen.

  • Im Beispiel auf der rechten Seite wurde das Argument na.rm = TRUE nicht gesetzt, was dazu führt, dass im Merkmal delay sehr viele NA-Werte auftreten.

# einfaches Beispiel: 

x <- c(1:5, NA) 
sum(x)
[1] NA
sum(x, na.rm = TRUE)
[1] 15
flights |> 
   group_by(month, day) |> 
   summarise(delay = mean(dep_delay))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by month and day.
ℹ Output is grouped by month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 3
# Groups:   month [12]
   month   day delay
   <int> <int> <dbl>
 1     1     1    NA
 2     1     2    NA
 3     1     3    NA
 4     1     4    NA
 5     1     5    NA
 6     1     6    NA
 7     1     7    NA
 8     1     8    NA
 9     1     9    NA
10     1    10    NA
# ℹ 355 more rows

Es gibt verschiedene Möglichkeiten, fehlende Werte zu ignorieren: \

  • Das Argument na.rm der Funktion mean() auf den Wahrheitswert TRUE gesetzt.
flights |> 
   group_by(month, day) |> 
   summarise(mean = mean(dep_delay, na.rm = TRUE))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by month and day.
ℹ Output is grouped by month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 3
# Groups:   month [12]
   month   day  mean
   <int> <int> <dbl>
 1     1     1 11.5 
 2     1     2 13.9 
 3     1     3 11.0 
 4     1     4  8.95
 5     1     5  5.73
 6     1     6  7.15
 7     1     7  5.42
 8     1     8  2.55
 9     1     9  2.28
10     1    10  2.84
# ℹ 355 more rows
  • Man kann auch mit der Funktion filter() alle Zeilen herausgefiltert, bei denen der Ausdruck !is.na(dep_delay) den Wahrheitswert FALSE hat. Dabei liefert Ausdruck !is.na(dep_delay) einen logischen Vektor, der genau dann FALSE ist, falls eine Ausprägung von dep_delay den Wert NA hat.
flights |> 
   group_by(month, day) |> 
   filter(!is.na(dep_delay)) |>
   summarise(mean = mean(dep_delay))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by month and day.
ℹ Output is grouped by month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 3
# Groups:   month [12]
   month   day  mean
   <int> <int> <dbl>
 1     1     1 11.5 
 2     1     2 13.9 
 3     1     3 11.0 
 4     1     4  8.95
 5     1     5  5.73
 6     1     6  7.15
 7     1     7  5.42
 8     1     8  2.55
 9     1     9  2.28
10     1    10  2.84
# ℹ 355 more rows

Die letzte Methode ist alle Beobachtungen mit drop_na() auszusortieren, bei denen das Merkmal dep_delay den Wert NA hat. Die Funktion drop_na() kann auch mehrere Argumente haben, wobei dann alle Beobachtungen aussortiert werden, bei denen mindestens eines der angegebenen Merkmale fehlt, also den Wert NA hat.

flights |> 
   group_by(month, day) |> 
   drop_na(dep_delay) |>
   summarise(mean = mean(dep_delay))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by month and day.
ℹ Output is grouped by month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 3
# Groups:   month [12]
   month   day  mean
   <int> <int> <dbl>
 1     1     1 11.5 
 2     1     2 13.9 
 3     1     3 11.0 
 4     1     4  8.95
 5     1     5  5.73
 6     1     6  7.15
 7     1     7  5.42
 8     1     8  2.55
 9     1     9  2.28
10     1    10  2.84
# ℹ 355 more rows

11.7.6 Anzahlen: n() und n_distinct()

Sobald man Daten aggregiert, ist es sinnvoll, die Anzahl der Beobachtungen je Gruppe mit der Funktion n()zu zählen. Will man nur die nicht-fehlenden Werte eines Merkmals zählen, verwendet man statt n() die Befehlssequenz sum(!is.na(<Merkmal>)).

Im Beispiel folgenden Beispiel wird nach der Flugzeugnummer gruppiert und danach die durchschnittliche Verspätung der Flugzeuge beim Abflug bestimmt.

flights |> 
     drop_na(dep_delay, arr_delay) |>
     group_by(tailnum) |>
     summarise(delay = mean(dep_delay)) |>
     ggplot(aes(x = delay)) + 
        geom_freqpoly(binwidth = 5) 

Man kann dem Plot entnehmen, dass es Flugzeuge gibt, die fünf Stunden (300 Minuten) Verspätung haben. Dies untersuchen wir im Folgenden detaillierter.

delays <- flights |> 
          drop_na(dep_delay, arr_delay) |>
          group_by(tailnum) |>
          summarise(delay = mean(dep_delay),
                    n = n()) 

delays |> ggplot(aes(x = n, y = delay)) + 
           geom_point(alpha = 0.1)

delays |> filter(n > 25) |> 
           ggplot(aes(x = n, y = delay)) + 
           geom_point(alpha = 0.1)

  • Man sieht, dass die Verspätungen für selten startende Flugzeuge stärker streut.
  • Bei der unteren Grafik werden nur Flugzeuge betrachtet, die öfter als 25 mal geflogen sind.
  • Damit relativiert sich die Erkenntnis der letzten Seite: Die großen durchschnittlichen Verspätungen treten nur bei geringer Anzahl von Flügen auf.

Die Funktion n()zählt die Gesamtanzahl der jeweiligen Beobachtungen.Manchmal ist es aber interessant zu wissen wie viele verschiedene Beobachtung in einem Merkmal vorkommen. Dazu dient die Funktion n_distinct().

flights |> drop_na(dep_delay, arr_delay) |> 
     filter(dest == "ATL") |> 
     ggplot(aes(x = carrier)) + 
        geom_bar()

flights |> drop_na(dep_delay, arr_delay) |> 
     group_by(dest) |> 
     summarise(carriers = n_distinct(carrier),
               n = n()) |> 
     arrange(desc(carriers))
# A tibble: 104 × 3
   dest  carriers     n
   <chr>    <int> <int>
 1 ATL          7 16837
 2 BOS          7 15022
 3 CLT          7 13674
 4 ORD          7 16566
 5 TPA          7  7390
 6 AUS          6  2411
 7 DCA          6  9111
 8 DTW          6  9031
 9 IAD          6  5383
10 MSP          6  6929
# ℹ 94 more rows
Tabelle 11.4: Liste nützlicher Funktionen für summarise()
Funktion Art Erklärung
mean() Lagemaß arithmetisches Mittel
median() Lagemaß Median
sd() Streumaß (Stichproben-)Standardabweichung
var() Streumaß (Stichproben-)Varianz
IQR() Streumaß Interquartilsabstand
mad() Streumaß mittlere absolute Abweichung vom Median
min() Rangmaß Minimum
quantile() Rangmaß Quantile
max() Rangmaß Maximum
first() Positionsmaß das erste Element: first(x) entspricht x[1]
nth() Positionsmaß das (n)-te Element: nth(x, 5) entspricht x[5]
last() Positionsmaß Das letzte Element: last(x) entspricht x[length(x)]
n() Anzahl Gesamtanzahl der Beobachtungen
n_distinct() Anzahl Anzahl der verschiedenen Beobachtungen
sum() Summe Summe von Werten; nützlich ist die Summe über Wahrheitswerte, z.B. sum(is.na()) oder sum(<Bedingung>)

Beispiele:

# first_dep: erster Flug am Tag
# last_dep: letzter Flug am Tag
flights |> 
     drop_na(dep_delay, arr_delay) |> 
     group_by(year, month, day) |> 
     summarise(first_dep = first(dep_time), 
               last_dep = last(dep_time))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year, month, and day.
ℹ Output is grouped by year and month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 5
# Groups:   year, month [12]
    year month   day first_dep last_dep
   <int> <int> <int>     <int>    <int>
 1  2013     1     1       517     2356
 2  2013     1     2        42     2354
 3  2013     1     3        32     2349
 4  2013     1     4        25     2358
 5  2013     1     5        14     2357
 6  2013     1     6        16     2355
 7  2013     1     7        49     2359
 8  2013     1     8       454     2351
 9  2013     1     9         2     2252
10  2013     1    10         3     2320
# ℹ 355 more rows
# Anzahl der verschiedenen Carrier 
flights |> drop_na(dep_delay, arr_delay) |> 
     group_by(dest) |> 
     summarise(carriers = n_distinct(carrier)) |> 
     arrange(desc(carriers))
# A tibble: 104 × 2
   dest  carriers
   <chr>    <int>
 1 ATL          7
 2 BOS          7
 3 CLT          7
 4 ORD          7
 5 TPA          7
 6 AUS          6
 7 DCA          6
 8 DTW          6
 9 IAD          6
10 MSP          6
# ℹ 94 more rows
# Ausgehende Flüge vor 5:00 Uhr: 
flights |> drop_na(dep_delay, arr_delay) |> 
     group_by(year, month, day) |> 
     summarise(n_early = sum(dep_time < 500))
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year, month, and day.
ℹ Output is grouped by year and month.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, month, day))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
# A tibble: 365 × 4
# Groups:   year, month [12]
    year month   day n_early
   <int> <int> <int>   <int>
 1  2013     1     1       0
 2  2013     1     2       3
 3  2013     1     3       4
 4  2013     1     4       3
 5  2013     1     5       3
 6  2013     1     6       2
 7  2013     1     7       2
 8  2013     1     8       1
 9  2013     1     9       3
10  2013     1    10       3
# ℹ 355 more rows

11.8 Die slice_* Funktionen

Es gibt eine sehr praktische Funktionenfamilie, um (ggf.innerhalb von gruppierten Daten) spezielle Zeilen auszuwählen:

  • slice_head(n = 1) zeigt die erste Zeile jeder Gruppe.
  • slice_tail(n = 1) zeigt die letzte Zeile jeder Gruppe.
  • slice_min(x, n = 1) zeigt die Zeile mit dem kleinsten Wert von x.
  • slice_max(x, n = 1) zeigt die Zeile mit dem größten Wert von x.
  • slice_sample(n = 1) wählt eine zufällige Zeile aus.

Bemerkungen:

  • Das Argument n = kann natürlich variieren, außerdem kann ein mit dem Argument prop = ein Anteil angegeben werden: zum Beispiel wählt prop = 0.1 die jeweiligen 10% der Gruppen aus.
  • Die slice_sample() Funktion ist praktisch, um aus einem großen Datensatz kleinere Datensätze zu ziehen (z.B. beim Bootstrapping) oder für ggpairs().
  • Bei Gleichständen werden alle Werte in der resultierenden Datentabelle gezeigt. Dies kann mit with_ties = FALSE geändert werden (siehe Hilfe).

Beispiele:

Im folgenden Beispiel werden die 13 größten Verspätungen arr_delay angezeigt. Die Funktion select() dient nur dazu die Ausgabe ein wenig übersichtlicher zu gestalten.

flights |> select(month, day, carrier, flight, arr_delay) |> 
           slice_max(arr_delay, n = 13)
# A tibble: 13 × 5
   month   day carrier flight arr_delay
   <int> <int> <chr>    <int>     <dbl>
 1     1     9 HA          51      1272
 2     6    15 MQ        3535      1127
 3     1    10 MQ        3695      1109
 4     9    20 AA         177      1007
 5     7    22 MQ        3075       989
 6     4    10 DL        2391       931
 7     3    17 DL        2119       915
 8     7    22 DL        2047       895
 9    12     5 AA         172       878
10     5     3 MQ        3744       875
11    12    14 DL        2391       856
12     5    19 AA         257       852
13     1     1 MQ        3944       851

Die slice-* Funktionen operieren auch auf gruppierten Daten. Im Folgenden wird bezüglich des Merkmals month gruppiert und für jeden Monat die 3 größten Verspätungen angezeigt.

flights |> select(month, day, carrier, flight, arr_delay) |> 
           group_by(month) |> 
           slice_max(arr_delay, n = 3)
# A tibble: 37 × 5
# Groups:   month [12]
   month   day carrier flight arr_delay
   <int> <int> <chr>    <int>     <dbl>
 1     1     9 HA          51      1272
 2     1    10 MQ        3695      1109
 3     1     1 MQ        3944       851
 4     2    10 F9         835       834
 5     2    24 DL         575       773
 6     2    19 DL        2319       767
 7     3    17 DL        2119       915
 8     3    18 DL        2363       784
 9     3    18 EV        4326       506
10     4    10 DL        2391       931
# ℹ 27 more rows

Selbsttest: Daten bereinigen

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht Jahrgang AusgGesamt
24 weiblich 2023 20
22 männlich 2026 30
22 weiblich 2025 40
25 weiblich 2025 65
22 männlich 2026 90
25 männlich 2024 95
24 weiblich 2023 105
23 männlich 2023 105
23 männlich 2025 115
22 männlich 2024 125
28 männlich 2023 125
25 männlich 2026 125
25 männlich 2024 130
22 weiblich 2023 150
22 weiblich 2025 155
27 männlich 2026 155
23 männlich 2026 155
23 männlich 2024 155
22 weiblich 2026 170
27 männlich 2025 175
22 männlich 2024 185
24 männlich 2026 190
23 männlich 2023 195
23 männlich 2025 200
22 weiblich 2022 205
23 männlich 2025 210
24 männlich 2023 215
24 männlich 2024 215
22 männlich 2024 215
23 weiblich 2025 225
22 männlich 2023 230
24 männlich 2025 265
23 weiblich 2022 270
24 männlich 2025 270
22 männlich 2026 285
23 weiblich 2026 285
22 weiblich 2023 305
25 weiblich 2026 305
23 männlich 2026 345
26 weiblich 2025 350
23 männlich 2023 355
23 männlich 2024 380
27 weiblich 2025 390
24 weiblich 2026 390
22 männlich 2025 420

Ausgabetabelle (2)
Alter Geschlecht AnzSchuhe
24 männlich 28
21 männlich 21
22 männlich 19
22 weiblich 18
24 weiblich 17
22 männlich 16
20 männlich 15
21 weiblich 15
18 männlich 13
20 männlich 13
25 männlich 12
21 männlich 11
18 männlich 11
27 männlich 11
23 männlich 11
23 weiblich 8
22 männlich 7
23 männlich 7
21 männlich 7
25 weiblich 1

Ausgabetabelle (3)
Geschlecht Jahrgang n
männlich 2023 7
männlich 2024 11
männlich 2025 15
männlich 2026 15
weiblich 2022 2
weiblich 2023 4
weiblich 2024 1
weiblich 2025 13
weiblich 2026 5

Ausgabetabelle (4)
Jahrgang männlich weiblich
2023 7 4
2024 11 1
2025 15 13
2026 15 5
2022
2

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 2
  • Befehl (b) → Ausgabetabelle Nr. 3
  • Befehl (c) → Ausgabetabelle Nr. 1
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2022) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2023 3
männlich 2024 6
männlich 2025 12
männlich 2026 10
weiblich 2023 4
weiblich 2024 3
weiblich 2025 9
weiblich 2026 9

Ausgabetabelle (2)
Alter Geschlecht AnzSchuhe
19 männlich 14

Ausgabetabelle (3)
Jahrgang männlich weiblich
2022 1
2023 3 4
2024 6 3
2025 12 9
2026 10 9

Ausgabetabelle (4)
Alter Geschlecht Jahrgang AusgGesamt
23 männlich 2024 70
24 männlich 2025 70
25 männlich 2026 70
22 männlich 2026 95
25 männlich 2023 120
24 männlich 2025 125
23 männlich 2024 140
24 weiblich 2025 150
22 weiblich 2026 170
25 weiblich 2025 175
23 weiblich 2025 180
26 männlich 2025 180
22 männlich 2024 185
26 männlich 2024 185
24 männlich 2025 185
23 weiblich 2026 210
23 männlich 2025 240
26 männlich 2025 245
22 weiblich 2026 250
22 weiblich 2024 260
27 weiblich 2026 265
24 weiblich 2026 270
25 männlich 2025 275
22 männlich 2023 300
23 männlich 2026 305
22 männlich 2026 310
24 weiblich 2026 310
23 weiblich 2024 320
27 männlich 2026 320
25 männlich 2026 335
22 weiblich 2023 360
23 männlich 2026 370
26 männlich 2024 385
28 weiblich 2023 410

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 2
  • Befehl (b) → Ausgabetabelle Nr. 1
  • Befehl (c) → Ausgabetabelle Nr. 4
  • Befehl (d) → Ausgabetabelle Nr. 3

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Jahrgang männlich weiblich
2022 1 2
2023 6 2
2024 9 7
2025 11 11
2026 8 8

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2023 6
männlich 2024 9
männlich 2025 11
männlich 2026 8
weiblich 2022 2
weiblich 2023 2
weiblich 2024 7
weiblich 2025 11
weiblich 2026 8

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
25 weiblich 2026 20
25 weiblich 2024 65
25 männlich 2026 70
22 männlich 2025 110
22 männlich 2026 120
24 männlich 2025 140
24 männlich 2023 150
23 weiblich 2022 155
22 weiblich 2024 160
26 weiblich 2025 175
23 weiblich 2026 200
26 weiblich 2024 205
26 männlich 2024 205
22 männlich 2026 215
24 männlich 2023 215
22 weiblich 2023 220
25 männlich 2024 220
22 weiblich 2024 230
25 weiblich 2023 235
26 männlich 2025 245
24 weiblich 2026 265
26 männlich 2024 270
22 männlich 2026 275
25 männlich 2026 275
27 weiblich 2025 275
25 männlich 2024 280
22 männlich 2025 280
22 männlich 2023 285
24 weiblich 2025 300
22 weiblich 2024 310
23 weiblich 2025 330
25 weiblich 2026 330
25 männlich 2024 340
22 weiblich 2025 350
23 weiblich 2026 375
22 männlich 2025 390
22 männlich 2023 395

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
24 weiblich 30
25 männlich 29
22 männlich 21
23 weiblich 21
19 weiblich 17
25 weiblich 17
19 männlich 16
20 männlich 16
22 männlich 15
22 männlich 12
20 weiblich 12
25 männlich 11
23 weiblich 10
20 weiblich 9
21 männlich 8
25 weiblich 4

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 1

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2025) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Geschlecht Jahrgang n
männlich 2022 3
männlich 2023 5
männlich 2024 7
männlich 2025 14
männlich 2026 9
weiblich 2022 1
weiblich 2023 3
weiblich 2024 6
weiblich 2025 9
weiblich 2026 5

Ausgabetabelle (2)
Alter Geschlecht AnzSchuhe
22 männlich 21
20 weiblich 18
21 weiblich 18
22 männlich 17
19 männlich 17
22 männlich 16
19 weiblich 14
23 männlich 14
22 weiblich 11
26 männlich 11
26 männlich 11
24 weiblich 10
25 männlich 10
19 weiblich 9
20 weiblich 9
22 männlich 7
18 männlich 7
20 männlich 6
22 männlich 6
22 männlich 5
20 weiblich 4
23 männlich 3
24 weiblich 1

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
28 männlich 2023 80
23 männlich 2022 100
22 männlich 2025 115
22 weiblich 2026 115
23 männlich 2023 125
22 weiblich 2024 130
27 männlich 2024 130
23 männlich 2023 130
22 männlich 2025 135
24 männlich 2023 150
23 männlich 2025 170
27 weiblich 2026 180
25 weiblich 2026 180
22 weiblich 2024 185
22 weiblich 2025 190
26 männlich 2025 200
22 männlich 2025 205
23 weiblich 2023 210
23 männlich 2022 220
25 männlich 2022 220
25 männlich 2025 220
26 männlich 2025 230
22 männlich 2024 275
25 männlich 2026 290
24 weiblich 2022 290
23 männlich 2025 295
24 weiblich 2025 310
25 männlich 2026 320
26 weiblich 2024 325
23 männlich 2026 340
22 männlich 2025 340
22 männlich 2025 370
22 männlich 2025 380
24 weiblich 2025 410

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 3 1
2023 5 3
2024 7 6
2025 14 9
2026 9 5

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 2
  • Befehl (b) → Ausgabetabelle Nr. 1
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2025) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 22) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht Jahrgang AusgGesamt
27 weiblich 2025 30
24 männlich 2022 45
23 weiblich 2023 45
25 männlich 2025 50
24 weiblich 2026 65
23 männlich 2025 75
28 weiblich 2025 95
23 weiblich 2025 120
24 männlich 2024 130
23 männlich 2024 135
27 weiblich 2026 145
23 weiblich 2025 170
24 männlich 2025 175
25 weiblich 2025 180
23 weiblich 2025 180
24 männlich 2025 200
24 weiblich 2024 210
25 weiblich 2024 215
26 weiblich 2024 215
23 weiblich 2025 215
23 männlich 2024 235
26 weiblich 2025 235
24 männlich 2024 240
24 männlich 2023 240
24 weiblich 2026 270
23 weiblich 2024 275
26 männlich 2026 275
26 männlich 2024 295
23 männlich 2025 320
26 männlich 2026 320
23 weiblich 2025 330
23 weiblich 2025 350
23 männlich 2024 350
26 männlich 2026 365
25 weiblich 2024 370
23 männlich 2026 375
26 weiblich 2024 390

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 2
männlich 2023 2
männlich 2024 8
männlich 2025 16
männlich 2026 15
weiblich 2022 1
weiblich 2023 2
weiblich 2024 6
weiblich 2025 16
weiblich 2026 10

Ausgabetabelle (3)
Alter Geschlecht AnzSchuhe
22 weiblich 20
21 männlich 20
20 männlich 20
18 weiblich 20
23 weiblich 18
24 männlich 17
21 männlich 17
21 männlich 17
25 männlich 17
18 männlich 15
18 weiblich 15
26 weiblich 15
23 männlich 14
23 männlich 14
27 weiblich 14
23 weiblich 14
25 weiblich 13
23 weiblich 12
19 männlich 12
22 männlich 11
28 weiblich 11
20 weiblich 10
24 männlich 7
23 weiblich 7
21 weiblich 6
20 männlich 5
21 männlich 5
22 männlich 5
20 weiblich 4
23 weiblich 4
23 weiblich 1
21 männlich 1

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 2 1
2023 2 2
2024 8 6
2025 16 16
2026 15 10

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 3
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 1
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2024) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht Jahrgang AusgGesamt
23 männlich 2023 30
22 männlich 2022 75
24 weiblich 2024 110
23 männlich 2025 115
25 weiblich 2024 125
24 weiblich 2025 140
23 männlich 2025 145
22 weiblich 2026 150
24 männlich 2022 170
22 männlich 2024 180
24 weiblich 2025 190
23 männlich 2025 195
24 männlich 2026 220
26 männlich 2025 235
23 männlich 2025 240
22 männlich 2025 245
22 weiblich 2025 255
23 weiblich 2024 265
22 männlich 2025 270
23 männlich 2026 275
25 weiblich 2025 310
27 männlich 2026 325
23 weiblich 2024 330
22 männlich 2023 330
22 männlich 2025 335
23 männlich 2026 350
22 weiblich 2026 370
22 männlich 2026 380

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 4
männlich 2023 3
männlich 2024 4
männlich 2025 12
männlich 2026 8
weiblich 2022 1
weiblich 2024 10
weiblich 2025 12
weiblich 2026 6

Ausgabetabelle (3)
Alter Geschlecht AnzSchuhe
21 männlich 21
21 weiblich 19
22 männlich 19
23 weiblich 18
25 weiblich 16
20 männlich 16
19 weiblich 14
19 weiblich 11
21 weiblich 9
23 weiblich 6
24 weiblich 6
21 männlich 4
18 weiblich 2
21 weiblich 1

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 4 1
2023 3
2024 4 10
2025 12 12
2026 8 6

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 3
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 1
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2025) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 20) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Jahrgang männlich weiblich
2023 6 1
2024 9 4
2025 20 12
2026 5 10
2022
1

Ausgabetabelle (2)
Alter Geschlecht Jahrgang AusgGesamt
22 männlich 2024 20
21 männlich 2025 70
22 männlich 2026 100
21 männlich 2025 105
22 männlich 2025 105
23 männlich 2023 105
25 männlich 2025 110
23 weiblich 2025 110
22 männlich 2023 120
21 männlich 2025 125
21 weiblich 2026 130
22 männlich 2025 130
21 männlich 2025 135
23 männlich 2025 135
22 weiblich 2026 135
26 männlich 2025 140
23 weiblich 2025 150
21 männlich 2025 160
24 männlich 2025 165
25 männlich 2025 170
26 weiblich 2024 185
25 weiblich 2025 190
22 männlich 2023 195
23 männlich 2025 195
24 männlich 2024 205
22 weiblich 2026 210
22 weiblich 2026 215
22 männlich 2026 245
25 männlich 2023 265
21 weiblich 2025 275
23 weiblich 2022 275
22 weiblich 2025 280
24 männlich 2026 285
24 männlich 2023 285
23 männlich 2024 310
26 weiblich 2025 310
27 männlich 2025 315
24 männlich 2024 320
24 weiblich 2026 320
21 männlich 2024 330
24 männlich 2025 330
21 weiblich 2025 335
22 weiblich 2026 350
23 weiblich 2026 365
24 männlich 2026 370
21 weiblich 2024 395
22 weiblich 2025 395
24 weiblich 2024 400
26 männlich 2025 420

Ausgabetabelle (3)
Geschlecht Jahrgang n
männlich 2023 6
männlich 2024 9
männlich 2025 20
männlich 2026 5
weiblich 2022 1
weiblich 2023 1
weiblich 2024 4
weiblich 2025 12
weiblich 2026 10

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
22 männlich 31
26 männlich 28
20 weiblich 24
24 männlich 23
27 männlich 22
21 männlich 22
18 männlich 19
25 weiblich 19
21 männlich 18
21 männlich 16
20 männlich 16
24 männlich 15
21 weiblich 15
26 männlich 15
18 weiblich 15
21 männlich 15
21 männlich 14
26 weiblich 13
25 männlich 13
22 männlich 13
22 weiblich 13
20 weiblich 12
25 männlich 11
23 weiblich 8
23 männlich 6
22 weiblich 6
20 männlich 5
23 weiblich 5
18 weiblich 4
20 männlich 3
21 weiblich 1
23 männlich 1

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 3
  • Befehl (c) → Ausgabetabelle Nr. 2
  • Befehl (d) → Ausgabetabelle Nr. 1

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2023) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 23) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
18 männlich 19

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2023 1
männlich 2024 6
männlich 2025 11
männlich 2026 13
weiblich 2022 3
weiblich 2024 5
weiblich 2025 10
weiblich 2026 14

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
24 männlich 2026 40
27 weiblich 2026 90
24 männlich 2024 90
24 weiblich 2024 95
25 weiblich 2025 120
26 männlich 2024 125
24 männlich 2024 140
27 weiblich 2026 150
24 männlich 2025 155
24 weiblich 2026 160
26 männlich 2025 170
29 weiblich 2022 195
26 weiblich 2025 195
25 weiblich 2026 200
25 männlich 2026 245
24 weiblich 2026 255
25 weiblich 2024 275
24 männlich 2025 315

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 1 3
2023 1
2024 6 5
2025 11 10
2026 13 14

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2023) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht Jahrgang AusgGesamt
22 männlich 2026 55
25 männlich 2023 80
24 männlich 2026 80
23 weiblich 2026 110
24 weiblich 2025 120
22 weiblich 2024 130
22 weiblich 2024 135
23 weiblich 2026 155
22 weiblich 2024 155
27 männlich 2025 190
23 männlich 2026 195
24 männlich 2025 205
24 männlich 2025 215
23 weiblich 2025 215
25 männlich 2025 240
22 männlich 2024 240
22 weiblich 2023 285
24 männlich 2025 290
23 weiblich 2023 300
24 männlich 2025 315
23 weiblich 2023 315
25 weiblich 2026 315
23 männlich 2026 320
22 männlich 2024 345
23 weiblich 2025 355
25 männlich 2026 375
25 männlich 2024 390
23 weiblich 2026 410
24 weiblich 2025 420

Ausgabetabelle (2)
Jahrgang männlich weiblich
2023 3 4
2024 8 5
2025 9 8
2026 14 7

Ausgabetabelle (3)
Geschlecht Jahrgang n
männlich 2023 3
männlich 2024 8
männlich 2025 9
männlich 2026 14
weiblich 2023 4
weiblich 2024 5
weiblich 2025 8
weiblich 2026 7

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
25 männlich 18
23 weiblich 13
20 männlich 9
22 weiblich 6
23 weiblich 6
19 weiblich 3
18 männlich 2

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 3
  • Befehl (c) → Ausgabetabelle Nr. 1
  • Befehl (d) → Ausgabetabelle Nr. 2

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2022) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 23) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Jahrgang männlich weiblich
2022 2 2
2023 5 4
2024 9 8
2025 14 11
2026 9 6

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 2
männlich 2023 5
männlich 2024 9
männlich 2025 14
männlich 2026 9
weiblich 2022 2
weiblich 2023 4
weiblich 2024 8
weiblich 2025 11
weiblich 2026 6

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
24 männlich 2022 55
26 weiblich 2026 70
24 männlich 2026 110
24 weiblich 2023 135
25 weiblich 2025 145
28 männlich 2025 145
24 weiblich 2023 155
26 männlich 2024 195
24 männlich 2026 215
24 männlich 2024 225
28 weiblich 2025 230
25 männlich 2025 230
26 weiblich 2024 250
25 männlich 2025 270
24 weiblich 2024 275
24 männlich 2023 320
25 weiblich 2025 340
25 männlich 2024 345

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
22 männlich 19
24 männlich 8
22 weiblich 4
23 weiblich 1

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 1

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 22) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
20 weiblich 21
22 männlich 21
22 weiblich 19
20 männlich 19
19 weiblich 19
22 weiblich 18
24 weiblich 18
27 männlich 16
23 männlich 16
20 männlich 15
18 weiblich 14
24 weiblich 13
19 männlich 12
22 männlich 12
24 weiblich 11
25 männlich 9
22 männlich 8
18 männlich 7
25 männlich 7
20 männlich 5
19 männlich 5
22 weiblich 4
24 männlich 3
26 weiblich 1
23 männlich 1

Ausgabetabelle (2)
Alter Geschlecht Jahrgang AusgGesamt
26 weiblich 2026 40
24 weiblich 2026 45
25 männlich 2025 45
27 männlich 2026 110
26 weiblich 2023 130
24 weiblich 2026 165
23 weiblich 2024 165
24 männlich 2025 170
24 männlich 2026 170
24 männlich 2024 205
24 weiblich 2025 205
23 weiblich 2023 210
23 männlich 2025 220
23 weiblich 2025 225
25 weiblich 2022 235
24 männlich 2025 270
23 männlich 2025 290
23 männlich 2025 295
26 weiblich 2025 300
25 männlich 2026 310
23 männlich 2026 345
23 männlich 2024 370
25 männlich 2026 380
23 männlich 2026 380
24 weiblich 2026 385
26 männlich 2025 390
26 weiblich 2025 390
23 männlich 2023 400

Ausgabetabelle (3)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2023 7
männlich 2024 7
männlich 2025 12
männlich 2026 15
weiblich 2022 2
weiblich 2023 5
weiblich 2024 6
weiblich 2025 9
weiblich 2026 10

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 1 2
2023 7 5
2024 7 6
2025 12 9
2026 15 10

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 3
  • Befehl (c) → Ausgabetabelle Nr. 2
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 22) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht Jahrgang AusgGesamt
27 männlich 2023 55
25 männlich 2023 65
23 männlich 2025 90
23 männlich 2024 90
23 weiblich 2026 115
23 männlich 2025 130
24 weiblich 2023 130
25 weiblich 2024 135
23 weiblich 2024 145
24 männlich 2026 165
26 weiblich 2025 200
27 männlich 2026 205
24 weiblich 2025 210
24 männlich 2025 225
23 männlich 2025 230
31 männlich 2026 245
24 weiblich 2026 270
23 weiblich 2026 290
25 weiblich 2023 290
23 weiblich 2025 300
23 männlich 2026 325
25 weiblich 2026 325
24 männlich 2025 335
24 männlich 2022 350
24 männlich 2025 375
26 weiblich 2026 385
26 weiblich 2026 390

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 4
männlich 2023 4
männlich 2024 5
männlich 2025 14
männlich 2026 11
weiblich 2022 1
weiblich 2023 3
weiblich 2024 7
weiblich 2025 16
weiblich 2026 8

Ausgabetabelle (3)
Alter Geschlecht AnzSchuhe
22 männlich 27
25 weiblich 18
22 männlich 16
21 weiblich 15
23 männlich 15
22 männlich 14
26 weiblich 14
21 männlich 11
31 männlich 11
27 männlich 10
21 männlich 10
18 männlich 7
23 weiblich 7
19 männlich 7
24 männlich 4
22 weiblich 3
23 weiblich 3
24 weiblich 3
26 weiblich 1

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 4 1
2023 4 3
2024 5 7
2025 14 16
2026 11 8

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 3
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 1
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2025) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
20 weiblich 30
24 männlich 26
21 weiblich 23
23 männlich 18
20 weiblich 18
23 männlich 17
23 männlich 16
24 weiblich 15
21 männlich 15
23 männlich 15
23 männlich 15
23 männlich 14
19 männlich 14
26 männlich 14
24 männlich 13
24 männlich 13
21 männlich 13
32 weiblich 11
26 weiblich 10
18 weiblich 10
18 weiblich 8
18 männlich 7
20 weiblich 5
22 weiblich 4
20 weiblich 3
23 weiblich 3
24 männlich 1
24 männlich 1
24 männlich 1

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 3
männlich 2023 3
männlich 2024 5
männlich 2025 17
männlich 2026 6
weiblich 2022 1
weiblich 2023 4
weiblich 2024 3
weiblich 2025 12
weiblich 2026 6

Ausgabetabelle (3)
Jahrgang männlich weiblich
2022 3 1
2023 3 4
2024 5 3
2025 17 12
2026 6 6

Ausgabetabelle (4)
Alter Geschlecht Jahrgang AusgGesamt
22 weiblich 2025 40
24 männlich 2026 50
24 männlich 2025 60
23 männlich 2025 75
23 weiblich 2025 80
24 männlich 2025 95
24 männlich 2025 120
24 männlich 2025 130
26 weiblich 2025 145
22 weiblich 2026 145
23 männlich 2022 145
23 weiblich 2026 185
22 männlich 2023 195
23 männlich 2025 195
23 männlich 2025 200
23 männlich 2025 200
24 männlich 2026 215
24 weiblich 2025 225
26 männlich 2025 225
25 männlich 2022 230
32 weiblich 2025 230
23 weiblich 2024 230
24 männlich 2025 245
24 weiblich 2023 245
25 weiblich 2026 250
22 männlich 2026 255
23 männlich 2026 255
23 männlich 2025 255
24 männlich 2025 305
23 männlich 2023 320
23 männlich 2025 320
27 weiblich 2024 355

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 4
  • Befehl (d) → Ausgabetabelle Nr. 3

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2022) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
25 männlich 22
25 männlich 20
24 männlich 11

Ausgabetabelle (2)
Alter Geschlecht Jahrgang AusgGesamt
27 weiblich 2025 20
23 weiblich 2026 55
25 männlich 2022 65
23 weiblich 2025 70
24 weiblich 2026 75
24 weiblich 2026 75
22 männlich 2025 85
22 weiblich 2026 90
23 männlich 2026 90
25 männlich 2024 90
25 männlich 2025 95
25 männlich 2022 100
24 männlich 2023 100
24 männlich 2025 115
22 männlich 2025 130
22 männlich 2024 135
23 weiblich 2026 135
25 weiblich 2026 140
23 weiblich 2026 155
22 männlich 2024 160
26 männlich 2025 170
23 weiblich 2024 175
23 männlich 2026 180
22 männlich 2025 190
24 weiblich 2025 195
24 weiblich 2025 195
24 weiblich 2025 195
24 männlich 2024 200
23 männlich 2025 235
24 männlich 2023 240
27 weiblich 2025 250
25 weiblich 2026 255
24 weiblich 2026 255
24 männlich 2025 255
22 männlich 2025 260
22 weiblich 2025 260
25 männlich 2025 265
24 männlich 2025 270
24 männlich 2022 275
25 männlich 2025 285
23 männlich 2025 290
23 weiblich 2025 290
22 männlich 2026 295
22 männlich 2026 300
22 männlich 2024 300
22 männlich 2024 310
25 männlich 2024 310
22 männlich 2025 345
23 weiblich 2024 350
22 männlich 2025 355
24 weiblich 2024 360
27 weiblich 2024 370
22 männlich 2024 390
22 weiblich 2026 420

Ausgabetabelle (3)
Jahrgang männlich weiblich
2022 3
2023 3 1
2024 9 5
2025 19 14
2026 10 14

Ausgabetabelle (4)
Geschlecht Jahrgang n
männlich 2022 3
männlich 2023 3
männlich 2024 9
männlich 2025 19
männlich 2026 10
weiblich 2023 1
weiblich 2024 5
weiblich 2025 14
weiblich 2026 14

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 4
  • Befehl (c) → Ausgabetabelle Nr. 2
  • Befehl (d) → Ausgabetabelle Nr. 3

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2025) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 20) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Jahrgang männlich weiblich
2022 2 3
2023 5 4
2024 7 7
2025 18 6
2026 10 10

Ausgabetabelle (2)
Alter Geschlecht Jahrgang AusgGesamt
24 männlich 2026 20
23 männlich 2025 30
21 weiblich 2025 30
24 männlich 2025 50
23 weiblich 2026 90
23 männlich 2026 90
22 männlich 2026 105
24 männlich 2026 110
21 männlich 2024 115
24 männlich 2025 120
21 weiblich 2024 120
22 weiblich 2025 120
22 weiblich 2026 145
25 männlich 2023 155
23 weiblich 2023 155
24 weiblich 2024 155
22 männlich 2025 160
26 männlich 2025 165
23 männlich 2025 170
23 männlich 2025 180
25 weiblich 2023 185
22 männlich 2025 190
26 männlich 2023 195
23 weiblich 2025 200
22 männlich 2025 205
22 weiblich 2026 205
21 weiblich 2026 210
22 männlich 2026 220
24 männlich 2026 230
24 männlich 2022 235
23 männlich 2026 255
21 männlich 2023 270
25 weiblich 2025 275
21 männlich 2024 285
21 männlich 2024 290
24 weiblich 2026 290
25 männlich 2026 290
24 weiblich 2024 295
21 weiblich 2022 300
25 männlich 2023 305
23 weiblich 2023 315
22 männlich 2025 315
25 männlich 2022 320
25 männlich 2025 340
23 männlich 2026 345
22 weiblich 2024 350
21 männlich 2025 355
24 weiblich 2026 365
21 männlich 2025 370
28 weiblich 2022 380
23 männlich 2025 380

Ausgabetabelle (3)
Geschlecht Jahrgang n
männlich 2022 2
männlich 2023 5
männlich 2024 7
männlich 2025 18
männlich 2026 10
weiblich 2022 3
weiblich 2023 4
weiblich 2024 7
weiblich 2025 6
weiblich 2026 10

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
20 weiblich 31
25 männlich 20
26 männlich 19
20 männlich 17
25 weiblich 17
24 männlich 16
20 männlich 16
21 weiblich 16
20 männlich 15
23 männlich 15
23 weiblich 14
21 männlich 13
22 männlich 13
21 männlich 13
22 weiblich 13
19 männlich 13
22 männlich 11
23 männlich 10
23 männlich 7
24 männlich 7
22 männlich 7
19 weiblich 6
23 männlich 5
22 männlich 3

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 3
  • Befehl (c) → Ausgabetabelle Nr. 2
  • Befehl (d) → Ausgabetabelle Nr. 1

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 20) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
22 weiblich 29
26 weiblich 23
19 weiblich 20
21 weiblich 18
19 weiblich 16
19 weiblich 14
22 männlich 14
19 weiblich 14
20 männlich 13
20 männlich 13
22 männlich 13
25 männlich 12
18 weiblich 12
21 weiblich 11
18 männlich 11
21 männlich 10
22 männlich 10
21 männlich 9
22 männlich 8
19 weiblich 7
18 weiblich 5
19 männlich 4
27 männlich 1
20 weiblich 1

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2024 5
männlich 2025 6
männlich 2026 12
weiblich 2023 7
weiblich 2024 8
weiblich 2025 14
weiblich 2026 12

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
21 männlich 2025 40
21 weiblich 2023 45
22 weiblich 2025 75
21 weiblich 2025 75
21 weiblich 2026 75
21 männlich 2026 85
24 weiblich 2023 90
28 weiblich 2025 100
25 männlich 2026 105
23 weiblich 2024 115
22 männlich 2025 115
21 männlich 2026 120
21 weiblich 2025 120
25 weiblich 2024 140
21 weiblich 2024 150
21 männlich 2025 165
25 weiblich 2025 175
25 weiblich 2025 175
22 männlich 2026 180
21 männlich 2024 195
26 weiblich 2025 195
23 weiblich 2025 205
22 männlich 2026 205
21 weiblich 2024 210
22 männlich 2026 215
22 weiblich 2025 220
23 weiblich 2023 220
21 weiblich 2025 225
22 weiblich 2025 245
26 weiblich 2026 245
21 weiblich 2024 270
24 weiblich 2025 280
22 weiblich 2023 330
22 männlich 2026 335
29 männlich 2025 340
21 männlich 2024 340
21 weiblich 2023 355
21 weiblich 2026 365
28 männlich 2025 375
27 männlich 2026 375
21 weiblich 2025 385
22 weiblich 2026 395
23 weiblich 2025 395
22 weiblich 2023 400
23 weiblich 2023 420

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 1
2024 5 8
2025 6 14
2026 12 12
2023
7

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2023) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 20) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Jahrgang männlich weiblich
2022 2 1
2023 4 3
2024 6 6
2025 12 16
2026 6 12

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 2
männlich 2023 4
männlich 2024 6
männlich 2025 12
männlich 2026 6
weiblich 2022 1
weiblich 2023 3
weiblich 2024 6
weiblich 2025 16
weiblich 2026 12

Ausgabetabelle (3)
Alter Geschlecht AnzSchuhe
23 weiblich 25
18 männlich 18
20 männlich 14
22 männlich 10
24 weiblich 7
20 männlich 7
25 weiblich 1

Ausgabetabelle (4)
Alter Geschlecht Jahrgang AusgGesamt
22 männlich 2026 20
27 weiblich 2024 70
26 weiblich 2024 80
22 männlich 2025 105
23 männlich 2025 115
22 männlich 2023 120
24 weiblich 2024 125
25 männlich 2025 145
23 weiblich 2026 155
22 männlich 2025 180
22 männlich 2024 190
25 weiblich 2026 190
21 männlich 2025 195
21 weiblich 2026 200
21 weiblich 2022 200
26 weiblich 2025 205
22 männlich 2025 220
21 männlich 2022 230
24 männlich 2026 230
23 weiblich 2025 235
21 weiblich 2026 235
28 weiblich 2026 245
25 weiblich 2025 245
21 weiblich 2026 265
25 weiblich 2023 270
24 weiblich 2025 275
24 weiblich 2023 275
23 männlich 2026 280
23 weiblich 2023 280
24 weiblich 2025 290
25 männlich 2025 295
21 weiblich 2026 310
24 männlich 2022 315
22 weiblich 2025 325
21 männlich 2024 325
26 weiblich 2025 335
26 weiblich 2025 355
22 männlich 2024 365
25 weiblich 2025 370
22 weiblich 2026 370
24 weiblich 2024 395

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 3
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 4
  • Befehl (d) → Ausgabetabelle Nr. 1

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2026) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 22) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Alter Geschlecht AnzSchuhe
21 männlich 21
23 männlich 20
22 männlich 20
25 männlich 16
24 männlich 16
18 männlich 15
20 männlich 15
21 weiblich 15
22 weiblich 15
19 männlich 15
26 männlich 13
22 männlich 12
21 weiblich 12
18 männlich 10
26 weiblich 10
20 männlich 9
24 männlich 8
21 männlich 7
22 männlich 6
21 weiblich 5
21 männlich 4
24 männlich 3
22 weiblich 1

Ausgabetabelle (2)
Geschlecht Jahrgang n
männlich 2022 1
männlich 2023 2
männlich 2024 7
männlich 2025 19
männlich 2026 17
weiblich 2022 2
weiblich 2023 3
weiblich 2024 6
weiblich 2025 16
weiblich 2026 6

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
25 weiblich 2024 60
25 männlich 2026 70
23 weiblich 2024 85
24 männlich 2025 100
26 weiblich 2026 100
25 männlich 2025 105
26 männlich 2024 115
25 weiblich 2025 120
25 männlich 2025 130
23 männlich 2025 140
23 weiblich 2025 145
24 männlich 2023 155
23 männlich 2025 185
25 männlich 2025 195
24 männlich 2026 195
26 männlich 2025 220
24 weiblich 2025 235
25 männlich 2025 240
26 männlich 2026 250
24 männlich 2026 255
26 weiblich 2022 270
26 weiblich 2025 275
24 männlich 2025 275
23 weiblich 2023 280
25 männlich 2025 305
24 männlich 2026 310
26 weiblich 2024 315
28 weiblich 2022 345
25 männlich 2025 350
23 weiblich 2025 350
25 weiblich 2025 350
23 männlich 2026 370
23 weiblich 2025 395

Ausgabetabelle (4)
Jahrgang männlich weiblich
2022 1 2
2023 2 3
2024 7 6
2025 19 16
2026 17 6

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 1
  • Befehl (b) → Ausgabetabelle Nr. 2
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 4

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2024) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 21) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Geschlecht Jahrgang n
männlich 2023 2
männlich 2024 12
männlich 2025 12
männlich 2026 8
weiblich 2022 2
weiblich 2023 1
weiblich 2024 7
weiblich 2025 14
weiblich 2026 12

Ausgabetabelle (2)
Alter Geschlecht Jahrgang AusgGesamt
23 männlich 2025 20
25 weiblich 2024 65
23 weiblich 2024 70
22 männlich 2025 80
22 weiblich 2022 80
26 weiblich 2025 85
23 männlich 2026 90
24 männlich 2024 95
23 weiblich 2025 135
29 weiblich 2026 140
23 männlich 2024 145
24 weiblich 2022 150
24 weiblich 2026 160
25 männlich 2026 170
24 weiblich 2026 175
25 weiblich 2026 185
28 männlich 2026 185
23 männlich 2025 190
22 weiblich 2025 195
23 männlich 2024 205
25 männlich 2024 205
22 weiblich 2024 210
22 weiblich 2025 230
22 männlich 2025 245
22 männlich 2024 245
24 weiblich 2026 255
23 männlich 2024 260
22 weiblich 2025 285
26 weiblich 2025 290
22 weiblich 2026 300
22 weiblich 2024 305
24 weiblich 2026 310
25 männlich 2025 310
22 männlich 2025 315
24 männlich 2025 320
23 männlich 2024 325
24 weiblich 2025 335
24 männlich 2024 350
24 weiblich 2026 360
25 weiblich 2025 365
24 männlich 2025 365
24 männlich 2026 380
22 weiblich 2025 395

Ausgabetabelle (3)
Jahrgang männlich weiblich
2023 2 1
2024 12 7
2025 12 14
2026 8 12
2022
2

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
23 männlich 22
19 männlich 20
20 weiblich 20
23 männlich 19
19 weiblich 17
20 männlich 16
20 weiblich 13
22 weiblich 12
23 männlich 12
22 männlich 11
23 weiblich 11
22 weiblich 11
23 männlich 11
20 männlich 10
25 weiblich 10
24 männlich 7
24 männlich 7
25 männlich 4
20 männlich 3

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 1
  • Befehl (c) → Ausgabetabelle Nr. 2
  • Befehl (d) → Ausgabetabelle Nr. 3

Der Datensatz Umfrage enthält Daten einer Studierendenumfrage der TH Augsburg. Er hat u.a. die Spalten Alter, Geschlecht, Jahrgang, AnzSchuhe, AusgKomm und AusgSchuhe.

Die folgenden vier Befehle (a) bis (d) werden auf diesen Datensatz angewendet:

Befehl (a)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Jahrgang == 2022) |>
  select(Alter, Geschlecht, AnzSchuhe) |>
  arrange(desc(AnzSchuhe))
Befehl (b)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang)
Befehl (c)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  filter(Alter > 22) |>
  mutate(AusgGesamt = AusgKomm + AusgSchuhe) |>
  select(Alter, Geschlecht, Jahrgang, AusgGesamt) |>
  arrange(AusgGesamt)
Befehl (d)    erzeugt Ausgabetabelle Nr.
Umfrage |>
  count(Geschlecht, Jahrgang) |>
  pivot_wider(names_from  = Geschlecht,
              values_from = n)

Die Ausgabetabellen (1) bis (4) zeigen die Ergebnisse der vier Befehle – in einer anderen Reihenfolge:


Ausgabetabelle (1)
Geschlecht Jahrgang n
männlich 2022 2
männlich 2023 4
männlich 2024 7
männlich 2025 14
männlich 2026 20
weiblich 2023 2
weiblich 2024 5
weiblich 2025 8
weiblich 2026 13

Ausgabetabelle (2)
Jahrgang männlich weiblich
2022 2
2023 4 2
2024 7 5
2025 14 8
2026 20 13

Ausgabetabelle (3)
Alter Geschlecht Jahrgang AusgGesamt
24 männlich 2025 20
25 männlich 2022 45
23 weiblich 2023 60
23 weiblich 2026 70
23 weiblich 2026 75
23 weiblich 2026 80
24 männlich 2025 90
24 männlich 2025 95
26 weiblich 2024 110
24 weiblich 2026 110
25 männlich 2023 120
24 männlich 2026 125
25 weiblich 2026 140
23 männlich 2026 150
24 männlich 2025 165
25 männlich 2022 170
25 männlich 2025 200
23 weiblich 2026 215
23 männlich 2026 230
23 weiblich 2026 255
23 weiblich 2024 255
28 männlich 2024 260
26 weiblich 2026 270
23 männlich 2024 270
28 weiblich 2026 320
24 männlich 2026 350
25 weiblich 2024 360
25 männlich 2026 365
24 männlich 2026 375
27 weiblich 2025 385

Ausgabetabelle (4)
Alter Geschlecht AnzSchuhe
25 männlich 13
25 männlich 10

Wählen Sie für jeden Befehl die Nummer (1–4) der zugehörigen Ausgabetabelle.

  • Befehl (a) → Ausgabetabelle Nr. 4
  • Befehl (b) → Ausgabetabelle Nr. 1
  • Befehl (c) → Ausgabetabelle Nr. 3
  • Befehl (d) → Ausgabetabelle Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

Q R S T U V
1 Sellerie 99100.00 −4400.00 Catelyn −99100.00 22000.00
2 Mangold 83800.00 −4000.00 Catelyn −91450.00 20000.00
3 Sellerie 60100.00 −1400.00 Arya −79600.00 7000.00
4 Tomate −10900.00 600.00 Renly −44100.00 −3000.00
5 Tomate 11700.00 −300.00 Renly −55400.00 1500.00
6 Mangold 5900.00 700.00 Renly −52500.00 −3500.00
7 Tomate 70500.00 −3200.00 Joffrey −84800.00 16000.00
8 Tomate 87200.00 −4400.00 Catelyn −93150.00 22000.00
9 Gurke 31500.00 −1400.00 Arya −65300.00 7000.00
10 Mangold 79900.00 −3300.00 Joffrey −89500.00 16500.00
11 Sellerie 15200.00 −500.00 Renly −57150.00 2500.00
12 Fenchel 76000.00 −2600.00 Joffrey −87550.00 13000.00
13 Tomate 79400.00 −3800.00 Catelyn −89250.00 19000.00
14 Gurke 51200.00 −1700.00 Arya −75150.00 8500.00
15 Sellerie 20400.00 100.00 Renly −59750.00 −500.00
16 Sellerie 97400.00 −4000.00 Catelyn −98250.00 20000.00
17 Sellerie 10900.00 −600.00 Arya −55000.00 3000.00
18 Gurke 84800.00 −2800.00 Joffrey −91950.00 14000.00
19 Mangold 63000.00 −2600.00 Joffrey −81050.00 13000.00
20 Tomate 53900.00 −2000.00 Arya −76500.00 10000.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(13:16) |>
    select(Q, S, R) |>
    arrange(S, R)
Codefragment 2
DF |>
    slice(9:12) |>
    select(Q, S, U) |>
    arrange(S, U)
Codefragment 3
DF |>
    filter(S > -3900 & S < -1400) |>
    select(Q, S, R) |>
    arrange(S, R)
Codefragment 4
DF |>
    filter(S > -2300 & S < 350) |>
    select(Q, S, R) |>
    arrange(S, R)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
Q S R
Sellerie −4000.00 97400.00
Tomate −3800.00 79400.00
Gurke −1700.00 51200.00
Sellerie 100.00 20400.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
Q S R
Tomate −3800.00 79400.00
Mangold −3300.00 79900.00
Tomate −3200.00 70500.00
Gurke −2800.00 84800.00
Mangold −2600.00 63000.00
Fenchel −2600.00 76000.00
Tomate −2000.00 53900.00
Gurke −1700.00 51200.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
Q S U
Mangold −3300.00 −89500.00
Fenchel −2600.00 −87550.00
Gurke −1400.00 −65300.00
Sellerie −500.00 −57150.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
Q S R
Tomate −2000.00 53900.00
Gurke −1700.00 51200.00
Gurke −1400.00 31500.00
Sellerie −1400.00 60100.00
Sellerie −600.00 10900.00
Sellerie −500.00 15200.00
Tomate −300.00 11700.00
Sellerie 100.00 20400.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

K L M N O P
1 Paprika −9.90 Stannis 0.03 1.10 −0.07
2 Chicoree −5.40 Samwell 0.03 0.60 −0.06
3 Mangold −20.70 Bran 0.04 2.30 −0.12
4 Mangold 1.80 Samwell 0.01 −0.20 −0.02
5 Paprika −1.80 Samwell 0.03 0.20 −0.06
6 Salat −11.70 Bran 0.03 1.30 −0.08
7 Paprika −9.00 Tyrion 0.03 1.00 −0.08
8 Salat 0.00 Stannis 0.02 0.00 −0.05
9 Mangold −9.00 Tyrion 0.03 1.00 −0.07
10 Lauch −9.90 Bran 0.02 1.10 −0.04
11 Mangold −11.70 Bran 0.01 1.30 −0.01
12 Lauch −11.70 Bran 0.01 1.30 −0.01
13 Chicoree −5.40 Stannis 0.01 0.60 −0.01
14 Paprika 5.40 Samwell 0.00 −0.60 0.02
15 Mangold −1.80 Samwell 0.02 0.20 −0.05
16 Chicoree −9.90 Tyrion 0.02 1.10 −0.05
17 Lauch −5.40 Tyrion −0.01 0.60 0.03
18 Paprika −3.60 Stannis 0.03 0.40 −0.09
19 Lauch −9.90 Stannis 0.03 1.10 −0.09
20 Mangold 2.70 Samwell 0.00 −0.30 0.01
21 Chicoree −9.90 Tyrion 0.03 1.10 −0.06

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(L > -9 & L < 1.8) |>
    select(K, L, N) |>
    arrange(N, L)
Codefragment 2
DF |>
    filter(P > -0.0672 & P < -0.0246) |>
    select(M, P, O) |>
    arrange(P, O)
Codefragment 3
DF |>
    slice(1:4) |>
    select(K, L, N) |>
    arrange(N, L)
Codefragment 4
DF |>
    slice(9:14) |>
    select(M, P, O) |>
    arrange(O, P)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
K L N
Mangold 1.80 0.01
Chicoree −5.40 0.03
Paprika −9.90 0.03
Mangold −20.70 0.04


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
M P O
Samwell −0.06 0.20
Tyrion −0.06 1.10
Samwell −0.06 0.60
Stannis −0.05 0.00
Samwell −0.05 0.20
Tyrion −0.05 1.10
Bran −0.04 1.10


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
K L N
Lauch −5.40 −0.01
Chicoree −5.40 0.01
Mangold −1.80 0.02
Salat 0.00 0.02
Chicoree −5.40 0.03
Paprika −1.80 0.03
Paprika −3.60 0.03


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
M P O
Samwell 0.02 −0.60
Stannis −0.01 0.60
Tyrion −0.07 1.00
Bran −0.04 1.10
Bran −0.01 1.30
Bran −0.01 1.30

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

B C D E F G
1 Sansa 0.46 0.09 −0.50 Salat −4.14
2 Tywin 0.35 0.08 −0.46 Paprika −3.15
3 Tywin 0.37 0.09 −0.51 Paprika −3.33
4 Sansa 0.50 0.13 −0.61 Kohl −4.50
5 Robb 0.12 0.02 −0.28 Paprika −1.08
6 Tyrion 0.28 0.08 −0.45 Paprika −2.52
7 Tywin 0.35 0.07 −0.44 Paprika −3.15
8 Robb 0.05 −0.01 −0.21 Salat −0.45
9 Tyrion 0.22 0.06 −0.41 Paprika −1.98
10 Sansa 0.49 0.12 −0.57 Kohl −4.41
11 Tywin 0.38 0.09 −0.50 Kohl −3.42
12 Tyrion 0.32 0.07 −0.44 Kohl −2.88
13 Robb 0.15 0.05 −0.38 Zucchini −1.35
14 Sansa 0.55 0.12 −0.58 Paprika −4.95
15 Robb 0.13 0.02 −0.29 Kohl −1.17
16 Tyrion 0.15 0.06 −0.41 Kohl −1.35
17 Robb −0.02 0.02 −0.28 Salat 0.18
18 Tyrion 0.24 0.04 −0.36 Kohl −2.16
19 Tywin 0.39 0.10 −0.51 Paprika −3.51
20 Robb 0.00 0.02 −0.28 Paprika 0.00
21 Sansa 0.57 0.14 −0.64 Paprika −5.13
22 Tyrion 0.28 0.08 −0.46 Paprika −2.52
23 Sansa 0.40 0.10 −0.53 Kohl −3.60

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(G > -3.15 & G < -1.17) |>
    select(B, G, E) |>
    arrange(G, E)
Codefragment 2
DF |>
    filter(G > -4.5 & G < -2.88) |>
    select(B, G, D) |>
    arrange(G, D)
Codefragment 3
DF |>
    slice(3:6) |>
    select(B, G, E) |>
    arrange(G, E)
Codefragment 4
DF |>
    filter(G > -4.14 & G < -2.52) |>
    select(B, G, D) |>
    arrange(D, G)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
B G E
Sansa −4.50 −0.61
Tywin −3.33 −0.51
Tyrion −2.52 −0.45
Robb −1.08 −0.28


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
B G D
Sansa −4.41 0.12
Sansa −4.14 0.09
Sansa −3.60 0.10
Tywin −3.51 0.10
Tywin −3.42 0.09
Tywin −3.33 0.09
Tywin −3.15 0.07
Tywin −3.15 0.08


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
B G E
Tyrion −2.88 −0.44
Tyrion −2.52 −0.46
Tyrion −2.52 −0.45
Tyrion −2.16 −0.36
Tyrion −1.98 −0.41
Tyrion −1.35 −0.41
Robb −1.35 −0.38


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
B G D
Tywin −3.15 0.07
Tyrion −2.88 0.07
Tyrion −2.52 0.08
Tyrion −2.52 0.08
Tywin −3.15 0.08
Tywin −3.42 0.09
Tywin −3.33 0.09
Tywin −3.51 0.10
Sansa −3.60 0.10

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

R S T U V W
1 1.40 −0.01 Eddard −2.00 −0.04 Sellerie
2 17.50 0.04 Stannis −25.00 0.10 Paprika
3 20.30 0.08 Robert −29.00 0.22 Paprika
4 14.70 0.05 Stannis −21.00 0.12 Sellerie
5 19.60 0.05 Robert −28.00 0.14 Gurke
6 25.90 0.07 Robert −37.00 0.19 Gurke
7 10.50 0.02 Stannis −15.00 0.03 Gurke
8 4.90 0.00 Eddard −7.00 −0.02 Gurke
9 2.80 0.03 Eddard −4.00 0.08 Sellerie
10 11.90 0.04 Stannis −17.00 0.10 Pilz
11 32.90 0.09 Robert −47.00 0.26 Sellerie
12 21.00 0.05 Robert −30.00 0.14 Gurke
13 −1.40 0.02 Eddard 2.00 0.03 Sellerie
14 7.70 0.00 Eddard −11.00 −0.01 Paprika
15 18.90 0.05 Robert −27.00 0.12 Sellerie
16 17.50 0.04 Stannis −25.00 0.10 Sellerie
17 9.10 0.04 Eddard −13.00 0.09 Sellerie
18 10.50 0.02 Stannis −15.00 0.03 Pilz
19 21.70 0.06 Robert −31.00 0.16 Sellerie
20 0.00 0.01 Eddard 0.00 0.00 Sellerie
21 7.00 0.03 Stannis −10.00 0.08 Pilz
22 1.40 0.01 Eddard −2.00 0.00 Pilz
23 20.30 0.07 Robert −29.00 0.18 Pilz

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(15:19) |>
    select(T, R, S) |>
    arrange(S, R)
Codefragment 2
DF |>
    filter(R > 2.8 & R < 17.5) |>
    select(T, R, S) |>
    arrange(S, R)
Codefragment 3
DF |>
    slice(11:16) |>
    select(T, R, S) |>
    arrange(R, S)
Codefragment 4
DF |>
    slice(16:20) |>
    select(T, R, S) |>
    arrange(R, S)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
T R S
Stannis 10.50 0.02
Eddard 9.10 0.04
Stannis 17.50 0.04
Robert 18.90 0.05
Robert 21.70 0.06


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
T R S
Eddard −1.40 0.02
Eddard 7.70 0.00
Stannis 17.50 0.04
Robert 18.90 0.05
Robert 21.00 0.05
Robert 32.90 0.09


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
T R S
Eddard 4.90 0.00
Eddard 7.70 0.00
Stannis 10.50 0.02
Stannis 10.50 0.02
Stannis 7.00 0.03
Eddard 9.10 0.04
Stannis 11.90 0.04
Stannis 14.70 0.05


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
T R S
Eddard 0.00 0.01
Eddard 9.10 0.04
Stannis 10.50 0.02
Stannis 17.50 0.04
Robert 21.70 0.06

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

L M N O P Q
1 Theon 85.25 35.00 94.70 Broccoli 315.00
2 Sansa 75.90 34.00 76.00 Broccoli 306.00
3 Balon 65.65 23.00 55.50 Kohlrabi 207.00
4 Theon 91.05 40.00 106.30 Kohlrabi 360.00
5 Theon 97.70 50.00 119.60 Broccoli 450.00
6 Balon 59.05 14.00 42.30 Zwiebel 126.00
7 Sansa 64.85 22.00 53.90 Kohlrabi 198.00
8 Theon 75.70 35.00 75.60 Broccoli 315.00
9 Sansa 70.35 32.00 64.90 Chicoree 288.00
10 Sansa 79.55 31.00 83.30 Chicoree 279.00
11 Balon 56.10 14.00 36.40 Chicoree 126.00
12 Balon 62.25 13.00 48.70 Kohlrabi 117.00
13 Balon 67.55 21.00 59.30 Kohlrabi 189.00
14 Sansa 76.40 22.00 77.00 Zwiebel 198.00
15 Theon 97.35 51.00 118.90 Chicoree 459.00
16 Theon 114.80 61.00 153.80 Chicoree 549.00
17 Theon 81.90 42.00 88.00 Chicoree 378.00
18 Sansa 80.50 35.00 85.20 Broccoli 315.00
19 Balon 72.65 19.00 69.50 Chicoree 171.00
20 Balon 70.15 19.00 64.50 Broccoli 171.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(N > 31.5 & N < 50.5) |>
    select(P, N, Q) |>
    arrange(N, Q)
Codefragment 2
DF |>
    filter(N > 19 & N < 35) |>
    select(P, N, Q) |>
    arrange(Q, N)
Codefragment 3
DF |>
    slice(6:9) |>
    select(P, N, Q) |>
    arrange(N, Q)
Codefragment 4
DF |>
    slice(5:8) |>
    select(L, M, N) |>
    arrange(M, N)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
L M N
Balon 59.05 14.00
Sansa 64.85 22.00
Theon 75.70 35.00
Theon 97.70 50.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
P N Q
Chicoree 32.00 288.00
Broccoli 34.00 306.00
Broccoli 35.00 315.00
Broccoli 35.00 315.00
Broccoli 35.00 315.00
Kohlrabi 40.00 360.00
Chicoree 42.00 378.00
Broccoli 50.00 450.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
P N Q
Zwiebel 14.00 126.00
Kohlrabi 22.00 198.00
Chicoree 32.00 288.00
Broccoli 35.00 315.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
P N Q
Kohlrabi 21.00 189.00
Kohlrabi 22.00 198.00
Zwiebel 22.00 198.00
Kohlrabi 23.00 207.00
Chicoree 31.00 279.00
Chicoree 32.00 288.00
Broccoli 34.00 306.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

G H I J K L
1 −120000.00 27400.00 Samwell 375600.00 600000.00 Gurke
2 −230000.00 34500.00 Jon 396900.00 1150000.00 Ingwer
3 −220000.00 42800.00 Jon 421800.00 1100000.00 Ingwer
4 −160000.00 28400.00 Jon 378600.00 800000.00 Gurke
5 −120000.00 47600.00 Samwell 436200.00 600000.00 Zwiebel
6 −300000.00 55800.00 Theon 460800.00 1500000.00 Zucchini
7 −30000.00 10600.00 Cersei 325200.00 150000.00 Gurke
8 −30000.00 18900.00 Cersei 350100.00 150000.00 Ingwer
9 −80000.00 14100.00 Cersei 335700.00 400000.00 Gurke
10 −240000.00 39500.00 Theon 411900.00 1200000.00 Pilz
11 −240000.00 49300.00 Theon 441300.00 1200000.00 Ingwer
12 −310000.00 60100.00 Theon 473700.00 1550000.00 Ingwer
13 −60000.00 16800.00 Samwell 343800.00 300000.00 Pilz
14 −90000.00 46800.00 Samwell 433800.00 450000.00 Zucchini
15 −210000.00 38200.00 Jon 408000.00 1050000.00 Gurke
16 −420000.00 97800.00 Theon 586800.00 2100000.00 Ingwer
17 −150000.00 41700.00 Jon 418500.00 750000.00 Zucchini
18 −330000.00 72600.00 Theon 511200.00 1650000.00 Gurke
19 −130000.00 23600.00 Samwell 364200.00 650000.00 Gurke
20 −10000.00 10800.00 Cersei 325800.00 50000.00 Pilz
21 10000.00 −15400.00 Cersei 247200.00 −50000.00 Pilz

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(K > 150000 & K < 750000) |>
    select(I, K, G) |>
    arrange(K, G)
Codefragment 2
DF |>
    slice(4:9) |>
    select(L, J, G) |>
    arrange(G, J)
Codefragment 3
DF |>
    filter(J > 364200 & J < 433800) |>
    select(L, J, G) |>
    arrange(J, G)
Codefragment 4
DF |>
    filter(K > 450000 & K < 1150000) |>
    select(I, K, G) |>
    arrange(G, K)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
L J G
Gurke 375600.00 −120000.00
Gurke 378600.00 −160000.00
Ingwer 396900.00 −230000.00
Gurke 408000.00 −210000.00
Pilz 411900.00 −240000.00
Zucchini 418500.00 −150000.00
Ingwer 421800.00 −220000.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
L J G
Zucchini 460800.00 −300000.00
Gurke 378600.00 −160000.00
Zwiebel 436200.00 −120000.00
Gurke 335700.00 −80000.00
Gurke 325200.00 −30000.00
Ingwer 350100.00 −30000.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
I K G
Jon 1100000.00 −220000.00
Jon 1050000.00 −210000.00
Jon 800000.00 −160000.00
Jon 750000.00 −150000.00
Samwell 650000.00 −130000.00
Samwell 600000.00 −120000.00
Samwell 600000.00 −120000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
I K G
Samwell 300000.00 −60000.00
Cersei 400000.00 −80000.00
Samwell 450000.00 −90000.00
Samwell 600000.00 −120000.00
Samwell 600000.00 −120000.00
Samwell 650000.00 −130000.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 1

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

S T U V W X
1 Eddard 8.37 Sellerie −25000.00 225000.00 8.26
2 Renly 7.20 Spinat −28000.00 252000.00 5.91
3 Bran 5.34 Mangold 0.00 0.00 2.20
4 Eddard 7.43 Sellerie −24000.00 216000.00 6.37
5 Jaime 6.05 Spinat −16000.00 144000.00 3.63
6 Renly 6.21 Spinat −25000.00 225000.00 3.95
7 Eddard 5.91 Gurke −18000.00 162000.00 3.33
8 Eddard 6.83 Lauch −21000.00 189000.00 5.18
9 Jaime 5.52 Lauch −18000.00 162000.00 2.55
10 Bran 4.20 Lauch 5000.00 −45000.00 −0.08
11 Jaime 6.67 Gurke −12000.00 108000.00 4.86
12 Renly 8.48 Mangold −39000.00 351000.00 8.48
13 Eddard 8.03 Sellerie −27000.00 243000.00 7.58
14 Jaime 5.11 Lauch −12000.00 108000.00 1.73
15 Bran 5.20 Sellerie 2000.00 −18000.00 1.91
16 Jaime 5.67 Sellerie −12000.00 108000.00 2.86
17 Bran 5.91 Spinat −10000.00 90000.00 3.33
18 Bran 5.40 Gurke 0.00 0.00 2.31
19 Renly 6.70 Gurke −24000.00 216000.00 4.91
20 Renly 7.66 Spinat −32000.00 288000.00 6.84

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(13:16) |>
    select(U, V, W) |>
    arrange(V, W)
Codefragment 2
DF |>
    slice(5:10) |>
    select(U, T, V) |>
    arrange(V, T)
Codefragment 3
DF |>
    slice(2:7) |>
    select(U, V, W) |>
    arrange(W, V)
Codefragment 4
DF |>
    filter(V > -30000 & V < -18000) |>
    select(U, V, W) |>
    arrange(W, V)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
U V W
Mangold 0.00 0.00
Spinat −16000.00 144000.00
Gurke −18000.00 162000.00
Sellerie −24000.00 216000.00
Spinat −25000.00 225000.00
Spinat −28000.00 252000.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
U V W
Lauch −21000.00 189000.00
Sellerie −24000.00 216000.00
Gurke −24000.00 216000.00
Sellerie −25000.00 225000.00
Spinat −25000.00 225000.00
Sellerie −27000.00 243000.00
Spinat −28000.00 252000.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
U V W
Sellerie −27000.00 243000.00
Lauch −12000.00 108000.00
Sellerie −12000.00 108000.00
Sellerie 2000.00 −18000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
U T V
Spinat 6.21 −25000.00
Lauch 6.83 −21000.00
Lauch 5.52 −18000.00
Gurke 5.91 −18000.00
Spinat 6.05 −16000.00
Lauch 4.20 5000.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

B C D E F G
1 0.04 −0.04 1.82 Sansa Kohlrabi 2.60
2 0.05 −0.04 1.19 Stannis Kohlrabi 1.70
3 0.04 −0.04 0.70 Stannis Sellerie 1.00
4 0.03 −0.03 1.05 Stannis Kohlrabi 1.50
5 0.05 −0.04 1.33 Stannis Kohlrabi 1.90
6 0.07 −0.05 2.45 Catelyn Gurke 3.50
7 0.06 −0.05 2.17 Catelyn Sellerie 3.10
8 0.06 −0.04 2.17 Catelyn Spinat 3.10
9 0.06 −0.04 1.75 Sansa Gurke 2.50
10 0.05 −0.04 1.96 Sansa Gurke 2.80
11 0.05 −0.04 0.70 Stannis Kohlrabi 1.00
12 0.06 −0.05 1.82 Catelyn Gurke 2.60
13 0.06 −0.04 2.03 Catelyn Sellerie 2.90
14 0.05 −0.04 1.96 Catelyn Sellerie 2.80
15 0.06 −0.05 1.89 Catelyn Gurke 2.70
16 0.04 −0.04 1.82 Sansa Gurke 2.60
17 0.05 −0.04 1.12 Stannis Sellerie 1.60
18 0.05 −0.04 0.84 Stannis Gurke 1.20
19 0.05 −0.04 1.75 Catelyn Gurke 2.50
20 0.05 −0.04 1.19 Stannis Kohlrabi 1.70
21 0.06 −0.04 1.19 Sansa Sellerie 1.70
22 0.05 −0.04 1.61 Sansa Sellerie 2.30
23 0.05 −0.04 1.96 Sansa Sellerie 2.80

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(1:6) |>
    select(E, C, B) |>
    arrange(C, B)
Codefragment 2
DF |>
    slice(16:21) |>
    select(E, C, B) |>
    arrange(B, C)
Codefragment 3
DF |>
    slice(12:17) |>
    select(E, C, B) |>
    arrange(B, C)
Codefragment 4
DF |>
    slice(7:10) |>
    select(F, C, G) |>
    arrange(G, C)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
E C B
Sansa −0.04 0.04
Stannis −0.04 0.05
Stannis −0.04 0.05
Catelyn −0.04 0.05
Stannis −0.04 0.05
Sansa −0.04 0.06


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
E C B
Catelyn −0.05 0.07
Stannis −0.04 0.05
Stannis −0.04 0.05
Sansa −0.04 0.04
Stannis −0.04 0.04
Stannis −0.03 0.03


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
E C B
Sansa −0.04 0.04
Stannis −0.04 0.05
Catelyn −0.04 0.05
Catelyn −0.04 0.06
Catelyn −0.05 0.06
Catelyn −0.05 0.06


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
F C G
Gurke −0.04 2.50
Gurke −0.04 2.80
Sellerie −0.05 3.10
Spinat −0.04 3.10

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

A B C D E F
1 0.02 Samwell Chicoree −317.50 −0.02 409.00
2 0.01 Cersei Sellerie −242.50 −0.02 259.00
3 0.02 Daenerys Zucchini −389.50 −0.03 553.00
4 0.00 Cersei Pilz −234.00 0.00 242.00
5 0.00 Cersei Chicoree −226.00 0.00 226.00
6 0.02 Samwell Zucchini −276.00 −0.02 326.00
7 0.01 Samwell Zucchini −306.50 −0.02 387.00
8 0.02 Catelyn Gurke −431.00 −0.03 636.00
9 0.00 Cersei Sellerie −256.00 −0.01 286.00
10 0.02 Catelyn Chicoree −374.00 −0.02 522.00
11 0.02 Daenerys Sellerie −437.50 −0.03 649.00
12 0.01 Catelyn Gurke −255.50 −0.02 285.00
13 0.01 Samwell Pilz −315.50 −0.02 405.00
14 0.02 Catelyn Zucchini −305.00 −0.03 384.00
15 0.02 Daenerys Sellerie −357.50 −0.03 489.00
16 0.02 Daenerys Gurke −350.50 −0.03 475.00
17 0.02 Catelyn Gurke −295.50 −0.02 365.00
18 0.02 Daenerys Zucchini −314.00 −0.02 402.00
19 0.01 Cersei Gurke −310.50 −0.01 395.00
20 0.01 Samwell Chicoree −262.00 −0.01 298.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(1:6) |>
    select(B, F, E) |>
    arrange(F, E)
Codefragment 2
DF |>
    slice(12:17) |>
    select(B, E, A) |>
    arrange(E, A)
Codefragment 3
DF |>
    filter(F > 250.5 & F < 391) |>
    select(B, F, E) |>
    arrange(E, F)
Codefragment 4
DF |>
    slice(14:18) |>
    select(B, E, A) |>
    arrange(E, A)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
B E A
Daenerys −0.03 0.02
Daenerys −0.03 0.02
Catelyn −0.03 0.02
Catelyn −0.02 0.02
Daenerys −0.02 0.02


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
B F E
Cersei 226.00 0.00
Cersei 242.00 0.00
Cersei 259.00 −0.02
Samwell 326.00 −0.02
Samwell 409.00 −0.02
Daenerys 553.00 −0.03


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
B E A
Daenerys −0.03 0.02
Daenerys −0.03 0.02
Catelyn −0.03 0.02
Catelyn −0.02 0.02
Catelyn −0.02 0.01
Samwell −0.02 0.01


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
B F E
Catelyn 384.00 −0.03
Catelyn 365.00 −0.02
Samwell 326.00 −0.02
Catelyn 285.00 −0.02
Samwell 387.00 −0.02
Cersei 259.00 −0.02
Samwell 298.00 −0.01
Cersei 286.00 −0.01

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 3

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

F G H I J K
1 Paprika 761.50 0.16 640.00 −1.44 Arya
2 Paprika 643.00 0.12 403.00 −1.08 Jaime
3 Salat 785.00 0.20 687.00 −1.80 Sansa
4 Salat 883.00 0.26 883.00 −2.34 Sansa
5 Kohlrabi 618.00 0.16 353.00 −1.44 Arya
6 Sellerie 797.00 0.33 711.00 −2.97 Sansa
7 Kohlrabi 685.00 0.18 487.00 −1.62 Jaime
8 Sellerie 630.00 0.15 377.00 −1.35 Arya
9 Salat 580.00 0.10 277.00 −0.90 Jaime
10 Paprika 744.00 0.19 605.00 −1.71 Arya
11 Salat 666.00 0.16 449.00 −1.44 Jaime
12 Paprika 557.50 0.06 232.00 −0.54 Jaime
13 Sellerie 737.00 0.29 591.00 −2.61 Sansa
14 Salat 616.50 0.23 350.00 −2.07 Arya
15 Sellerie 761.00 0.20 639.00 −1.80 Arya
16 Paprika 730.50 0.28 578.00 −2.52 Sansa
17 Paprika 831.00 0.29 779.00 −2.61 Sansa
18 Paprika 594.50 0.14 306.00 −1.26 Jaime
19 Salat 863.00 0.30 843.00 −2.70 Sansa
20 Kohlrabi 595.50 0.09 308.00 −0.81 Jaime

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(16:19) |>
    select(K, I, H) |>
    arrange(I, H)
Codefragment 2
DF |>
    slice(8:13) |>
    select(K, I, H) |>
    arrange(I, H)
Codefragment 3
DF |>
    filter(G > 654.5 & G < 791) |>
    select(K, G, J) |>
    arrange(J, G)
Codefragment 4
DF |>
    filter(G > 606 & G < 744) |>
    select(K, G, J) |>
    arrange(G, J)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
K I H
Jaime 306.00 0.14
Sansa 578.00 0.28
Sansa 779.00 0.29
Sansa 843.00 0.30


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
K G J
Sansa 737.00 −2.61
Sansa 730.50 −2.52
Arya 761.00 −1.80
Sansa 785.00 −1.80
Arya 744.00 −1.71
Jaime 685.00 −1.62
Jaime 666.00 −1.44
Arya 761.50 −1.44


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
K I H
Jaime 232.00 0.06
Jaime 277.00 0.10
Arya 377.00 0.15
Jaime 449.00 0.16
Sansa 591.00 0.29
Arya 605.00 0.19


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
K G J
Arya 616.50 −2.07
Arya 618.00 −1.44
Arya 630.00 −1.35
Jaime 643.00 −1.08
Jaime 666.00 −1.44
Jaime 685.00 −1.62
Sansa 730.50 −2.52
Sansa 737.00 −2.61

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

E F G H I J
1 Robb −7000.00 Avocado 0.06 −4900.00 −0.35
2 Catelyn 26000.00 Pilz 0.78 18200.00 −2.51
3 Bran 14000.00 Lauch 0.29 9800.00 −1.06
4 Bran 10000.00 Broccoli 0.21 7000.00 −0.80
5 Jaime 19000.00 Zucchini 0.68 13300.00 −2.22
6 Bran 19000.00 Avocado 0.45 13300.00 −1.52
7 Jaime 21000.00 Broccoli 0.28 14700.00 −1.02
8 Catelyn 23000.00 Zucchini 0.72 16100.00 −2.34
9 Jaime 16000.00 Lauch 0.52 11200.00 −1.74
10 Catelyn 19000.00 Lauch 0.54 13300.00 −1.80
11 Catelyn 24000.00 Lauch 0.52 16800.00 −1.73
12 Robb 10000.00 Avocado 0.35 7000.00 −1.21
13 Robb −1000.00 Broccoli 0.12 −700.00 −0.53
14 Catelyn 24000.00 Lauch 0.39 16800.00 −1.34
15 Catelyn 33000.00 Avocado 0.67 23100.00 −2.19
16 Robb 1000.00 Avocado 0.14 700.00 −0.58
17 Robb 5000.00 Pilz 0.35 3500.00 −1.24
18 Jaime 16000.00 Pilz 0.33 11200.00 −1.16
19 Bran 17000.00 Pilz 0.67 11900.00 −2.20
20 Bran 17000.00 Broccoli 0.22 11900.00 −0.84
21 Jaime 19000.00 Broccoli 0.22 13300.00 −0.83
22 Robb 12000.00 Avocado 0.35 8400.00 −1.22

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(15:19) |>
    select(G, H, J) |>
    arrange(H, J)
Codefragment 2
DF |>
    filter(H > 0.3515 & H < 0.681) |>
    select(G, H, J) |>
    arrange(H, J)
Codefragment 3
DF |>
    filter(I > 7000 & I < 13300) |>
    select(E, I, F) |>
    arrange(F, I)
Codefragment 4
DF |>
    slice(10:13) |>
    select(E, I, F) |>
    arrange(I, F)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
G H J
Avocado 0.14 −0.58
Pilz 0.33 −1.16
Pilz 0.35 −1.24
Avocado 0.67 −2.19
Pilz 0.67 −2.20


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
E I F
Robb −700.00 −1000.00
Robb 7000.00 10000.00
Catelyn 13300.00 19000.00
Catelyn 16800.00 24000.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
E I F
Robb 8400.00 12000.00
Bran 9800.00 14000.00
Jaime 11200.00 16000.00
Jaime 11200.00 16000.00
Bran 11900.00 17000.00
Bran 11900.00 17000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
G H J
Pilz 0.35 −1.24
Lauch 0.39 −1.34
Avocado 0.45 −1.52
Lauch 0.52 −1.73
Lauch 0.52 −1.74
Lauch 0.54 −1.80
Avocado 0.67 −2.19
Pilz 0.67 −2.20

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

R S T U V W
1 Arya 0.04 0.04 −0.18 Zwiebel 0.01
2 Davos 0.04 0.09 −0.19 Chicoree 0.02
3 Arya 0.04 0.05 −0.19 Pilz 0.01
4 Balon 0.03 0.07 −0.15 Mangold 0.01
5 Arya 0.04 0.04 −0.19 Zwiebel 0.01
6 Davos 0.06 0.09 −0.24 Zwiebel 0.02
7 Balon 0.05 0.09 −0.22 Zwiebel 0.02
8 Arya 0.02 0.01 −0.13 Mangold 0.00
9 Arya 0.03 0.05 −0.15 Pilz 0.01
10 Davos 0.04 0.11 −0.18 Zwiebel 0.02
11 Davos 0.04 0.08 −0.17 Pilz 0.02
12 Balon 0.04 0.05 −0.18 Pilz 0.01
13 Davos 0.03 0.10 −0.17 Chicoree 0.02
14 Davos 0.03 0.10 −0.16 Zwiebel 0.02
15 Balon 0.04 0.08 −0.20 Mangold 0.02
16 Balon 0.05 0.05 −0.21 Chicoree 0.01
17 Arya 0.03 0.04 −0.17 Chicoree 0.01
18 Balon 0.05 0.06 −0.20 Chicoree 0.01
19 Balon 0.04 0.08 −0.17 Chicoree 0.02
20 Arya 0.02 0.04 −0.13 Zwiebel 0.01
21 Davos 0.06 0.16 −0.23 Zwiebel 0.03
22 Davos 0.03 0.09 −0.17 Pilz 0.02
23 Arya 0.04 0.02 −0.17 Zwiebel 0.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(W > 0.011 & W < 0.017) |>
    select(V, W, U) |>
    arrange(U, W)
Codefragment 2
DF |>
    filter(S > 0.034 & S < 0.0438) |>
    select(R, S, T) |>
    arrange(S, T)
Codefragment 3
DF |>
    filter(W > 0.008 & W < 0.016) |>
    select(V, W, U) |>
    arrange(U, W)
Codefragment 4
DF |>
    slice(12:17) |>
    select(R, S, T) |>
    arrange(T, S)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
R S T
Davos 0.03 0.09
Arya 0.04 0.02
Davos 0.04 0.08
Balon 0.04 0.08
Arya 0.04 0.04
Davos 0.04 0.11
Balon 0.04 0.05
Davos 0.04 0.09
Arya 0.04 0.04


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
V W U
Chicoree 0.01 −0.20
Mangold 0.02 −0.20
Chicoree 0.02 −0.17
Pilz 0.02 −0.17
Mangold 0.01 −0.15


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
V W U
Chicoree 0.01 −0.21
Chicoree 0.01 −0.20
Pilz 0.01 −0.19
Pilz 0.01 −0.18
Mangold 0.01 −0.15
Pilz 0.01 −0.15


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
R S T
Arya 0.03 0.04
Balon 0.04 0.05
Balon 0.05 0.05
Balon 0.04 0.08
Davos 0.03 0.10
Davos 0.03 0.10

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

T U V W X Y
1 Tyrion 507000.00 Zwiebel −243000.00 −27000.00 404000.00
2 Bran 442000.00 Mangold −99000.00 −11000.00 371500.00
3 Daenerys 340000.00 Gurke −117000.00 −13000.00 320500.00
4 Daenerys 659000.00 Mangold −189000.00 −21000.00 480000.00
5 Renly 1118000.00 Zwiebel −441000.00 −49000.00 709500.00
6 Bran 531000.00 Gurke −171000.00 −19000.00 416000.00
7 Renly 1245000.00 Gurke −441000.00 −49000.00 773000.00
8 Tyrion 630000.00 Gurke −252000.00 −28000.00 465500.00
9 Bran 482000.00 Mangold −108000.00 −12000.00 391500.00
10 Bran 488000.00 Mangold −90000.00 −10000.00 394500.00
11 Renly 1083000.00 Gurke −360000.00 −40000.00 692000.00
12 Tyrion 395000.00 Zwiebel −216000.00 −24000.00 348000.00
13 Renly 1185000.00 Zwiebel −504000.00 −56000.00 743000.00
14 Bran 301000.00 Zwiebel −54000.00 −6000.00 301000.00
15 Daenerys 711000.00 Chicoree −171000.00 −19000.00 506000.00
16 Renly 1068000.00 Paprika −342000.00 −38000.00 684500.00
17 Daenerys 556000.00 Chicoree −198000.00 −22000.00 428500.00
18 Daenerys 538000.00 Paprika −198000.00 −22000.00 419500.00
19 Tyrion 370000.00 Zwiebel −189000.00 −21000.00 335500.00
20 Tyrion 381000.00 Paprika −216000.00 −24000.00 341000.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(W > -351000 & W < -189000) |>
    select(V, W, Y) |>
    arrange(W, Y)
Codefragment 2
DF |>
    slice(13:16) |>
    select(T, X, U) |>
    arrange(U, X)
Codefragment 3
DF |>
    filter(X > -27500 & X < -19000) |>
    select(T, X, U) |>
    arrange(X, U)
Codefragment 4
DF |>
    slice(9:12) |>
    select(V, W, Y) |>
    arrange(Y, W)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
V W Y
Paprika −342000.00 684500.00
Gurke −252000.00 465500.00
Zwiebel −243000.00 404000.00
Paprika −216000.00 341000.00
Zwiebel −216000.00 348000.00
Paprika −198000.00 419500.00
Chicoree −198000.00 428500.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
V W Y
Zwiebel −216000.00 348000.00
Mangold −108000.00 391500.00
Mangold −90000.00 394500.00
Gurke −360000.00 692000.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
T X U
Tyrion −27000.00 507000.00
Tyrion −24000.00 381000.00
Tyrion −24000.00 395000.00
Daenerys −22000.00 538000.00
Daenerys −22000.00 556000.00
Tyrion −21000.00 370000.00
Daenerys −21000.00 659000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
T X U
Bran −6000.00 301000.00
Daenerys −19000.00 711000.00
Renly −38000.00 1068000.00
Renly −56000.00 1185000.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

L M N O P Q
1 Samwell 211800.00 −2100.00 26100.00 −3000.00 Zucchini
2 Theon 247500.00 700.00 14200.00 1000.00 Zucchini
3 Jon 206400.00 −6300.00 27900.00 −9000.00 Zwiebel
4 Theon 354600.00 5600.00 −21500.00 8000.00 Fenchel
5 Daenerys 189900.00 −15400.00 33400.00 −22000.00 Chicoree
6 Samwell 364200.00 0.00 −24700.00 0.00 Zwiebel
7 Jon 228000.00 −6300.00 20700.00 −9000.00 Paprika
8 Daenerys 177300.00 −11200.00 37600.00 −16000.00 Zucchini
9 Jon 312900.00 −4900.00 −7600.00 −7000.00 Zwiebel
10 Theon 347400.00 7000.00 −19100.00 10000.00 Paprika
11 Samwell 225600.00 0.00 21500.00 0.00 Paprika
12 Theon 580200.00 31500.00 −96700.00 45000.00 Fenchel
13 Daenerys 78600.00 −13300.00 70500.00 −19000.00 Chicoree
14 Theon 435000.00 20300.00 −48300.00 29000.00 Zucchini
15 Daenerys 206700.00 −11900.00 27800.00 −17000.00 Zwiebel
16 Daenerys 158700.00 −12600.00 43800.00 −18000.00 Zucchini
17 Jon 196200.00 −9100.00 31300.00 −13000.00 Paprika
18 Theon 325200.00 8400.00 −11700.00 12000.00 Fenchel
19 Jon 268200.00 −700.00 7300.00 −1000.00 Fenchel
20 Daenerys 207300.00 −14000.00 27600.00 −20000.00 Fenchel
21 Samwell 305700.00 0.00 −5200.00 0.00 Chicoree
22 Samwell 277200.00 2100.00 4300.00 3000.00 Paprika

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(P > -19000 & P < -2000) |>
    select(L, P, M) |>
    arrange(M, P)
Codefragment 2
DF |>
    filter(P > -9000 & P < 8000) |>
    select(L, P, M) |>
    arrange(M, P)
Codefragment 3
DF |>
    slice(3:7) |>
    select(L, P, N) |>
    arrange(P, N)
Codefragment 4
DF |>
    filter(P > -2000 & P < 12000) |>
    select(L, P, N) |>
    arrange(P, N)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
L P M
Daenerys −18000.00 158700.00
Daenerys −16000.00 177300.00
Jon −13000.00 196200.00
Jon −9000.00 206400.00
Daenerys −17000.00 206700.00
Samwell −3000.00 211800.00
Jon −9000.00 228000.00
Jon −7000.00 312900.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
L P M
Samwell −3000.00 211800.00
Samwell 0.00 225600.00
Theon 1000.00 247500.00
Jon −1000.00 268200.00
Samwell 3000.00 277200.00
Samwell 0.00 305700.00
Jon −7000.00 312900.00
Samwell 0.00 364200.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
L P N
Jon −1000.00 −700.00
Samwell 0.00 0.00
Samwell 0.00 0.00
Samwell 0.00 0.00
Theon 1000.00 700.00
Samwell 3000.00 2100.00
Theon 8000.00 5600.00
Theon 10000.00 7000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
L P N
Daenerys −22000.00 −15400.00
Jon −9000.00 −6300.00
Jon −9000.00 −6300.00
Samwell 0.00 0.00
Theon 8000.00 5600.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 3

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

H I J K L M
1 Samwell 46.70 6500.00 −1300.00 −40.70 Zucchini
2 Jaime 59.20 16000.00 −3200.00 −46.95 Chicoree
3 Theon 48.90 9500.00 −1900.00 −41.80 Pilz
4 Theon 53.70 10000.00 −2000.00 −44.20 Pilz
5 Jaime 62.80 15000.00 −3000.00 −48.75 Chicoree
6 Samwell 43.50 7500.00 −1500.00 −39.10 Chicoree
7 Theon 41.80 7000.00 −1400.00 −38.25 Zucchini
8 Samwell 34.70 8500.00 −1700.00 −34.70 Chicoree
9 Jaime 49.90 11500.00 −2300.00 −42.30 Chicoree
10 Jaime 54.70 13000.00 −2600.00 −44.70 Pilz
11 Samwell 43.10 5500.00 −1100.00 −38.90 Mangold
12 Samwell 37.10 9500.00 −1900.00 −35.90 Chicoree
13 Jaime 59.10 12500.00 −2500.00 −46.90 Pilz
14 Samwell 45.70 5000.00 −1000.00 −40.20 Chicoree
15 Theon 61.70 8500.00 −1700.00 −48.20 Mangold
16 Samwell 55.80 9000.00 −1800.00 −45.25 Pilz
17 Theon 37.90 7500.00 −1500.00 −36.30 Mangold
18 Theon 61.40 12000.00 −2400.00 −48.05 Chicoree
19 Theon 38.60 12000.00 −2400.00 −36.65 Chicoree
20 Jaime 58.80 13000.00 −2600.00 −46.75 Mangold
21 Jaime 50.70 15000.00 −3000.00 −42.70 Zucchini

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(I > 46.7 & I < 59.1) |>
    select(M, I, L) |>
    arrange(L, I)
Codefragment 2
DF |>
    filter(I > 49.9 & I < 61.4) |>
    select(M, I, L) |>
    arrange(L, I)
Codefragment 3
DF |>
    slice(11:14) |>
    select(M, I, L) |>
    arrange(I, L)
Codefragment 4
DF |>
    slice(4:8) |>
    select(H, J, K) |>
    arrange(K, J)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
H J K
Jaime 15000.00 −3000.00
Theon 10000.00 −2000.00
Samwell 8500.00 −1700.00
Samwell 7500.00 −1500.00
Theon 7000.00 −1400.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
M I L
Chicoree 37.10 −35.90
Mangold 43.10 −38.90
Chicoree 45.70 −40.20
Pilz 59.10 −46.90


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
M I L
Mangold 58.80 −46.75
Pilz 55.80 −45.25
Pilz 54.70 −44.70
Pilz 53.70 −44.20
Zucchini 50.70 −42.70
Chicoree 49.90 −42.30
Pilz 48.90 −41.80


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
M I L
Chicoree 59.20 −46.95
Pilz 59.10 −46.90
Mangold 58.80 −46.75
Pilz 55.80 −45.25
Pilz 54.70 −44.70
Pilz 53.70 −44.20
Zucchini 50.70 −42.70

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

G H I J K L
1 0.26 Sellerie −4.50 −0.50 2.06 Robert
2 0.41 Tomate −19.80 −2.20 2.50 Eddard
3 0.81 Tomate −35.10 −3.90 3.69 Stannis
4 0.63 Chicoree −24.30 −2.70 3.18 Stannis
5 0.46 Tomate −25.20 −2.80 2.64 Stannis
6 0.15 Chicoree 0.90 0.10 1.74 Jaime
7 0.41 Tomate −16.20 −1.80 2.50 Robert
8 0.46 Kohl −16.20 −1.80 2.64 Eddard
9 0.45 Tomate −18.00 −2.00 2.63 Eddard
10 0.16 Sellerie −7.20 −0.80 1.74 Jaime
11 0.14 Sellerie 0.00 0.00 1.70 Jaime
12 0.12 Tomate 3.60 0.40 1.64 Jaime
13 0.74 Chicoree −34.20 −3.80 3.51 Stannis
14 0.44 Tomate −16.20 −1.80 2.60 Robert
15 0.62 Chicoree −27.00 −3.00 3.14 Stannis
16 0.07 Chicoree −6.30 −0.70 1.50 Jaime
17 0.59 Tomate −18.90 −2.10 3.04 Eddard
18 −0.01 Sellerie 0.90 0.10 1.26 Jaime
19 0.45 Sellerie −10.80 −1.20 2.62 Robert
20 0.24 Tomate −4.50 −0.50 2.01 Robert
21 0.27 Sellerie −15.30 −1.70 2.08 Eddard
22 0.57 Chicoree −22.50 −2.50 2.99 Stannis

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(G > 0.243 & G < 0.455) |>
    select(H, G, J) |>
    arrange(G, J)
Codefragment 2
DF |>
    slice(1:6) |>
    select(H, G, J) |>
    arrange(J, G)
Codefragment 3
DF |>
    filter(K > 2.553 & K < 3.1785) |>
    select(L, K, G) |>
    arrange(G, K)
Codefragment 4
DF |>
    slice(19:22) |>
    select(L, K, G) |>
    arrange(K, G)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
H G J
Sellerie 0.26 −0.50
Sellerie 0.27 −1.70
Tomate 0.41 −2.20
Tomate 0.41 −1.80
Tomate 0.44 −1.80
Sellerie 0.45 −1.20
Tomate 0.45 −2.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
L K G
Robert 2.60 0.44
Robert 2.62 0.45
Eddard 2.63 0.45
Stannis 2.64 0.46
Eddard 2.64 0.46
Stannis 2.99 0.57
Eddard 3.04 0.59
Stannis 3.14 0.62
Stannis 3.18 0.63


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
H G J
Tomate 0.81 −3.90
Tomate 0.46 −2.80
Chicoree 0.63 −2.70
Tomate 0.41 −2.20
Sellerie 0.26 −0.50
Chicoree 0.15 0.10


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
L K G
Robert 2.01 0.24
Eddard 2.08 0.27
Robert 2.62 0.45
Stannis 2.99 0.57

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 4

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

U V W X Y Z
1 −2250000.00 −704000.00 Sellerie Bran 250000.00 602000.00
2 −1530000.00 −584500.00 Ingwer Renly 170000.00 363000.00
3 −900000.00 −639000.00 Tomate Balon 100000.00 472000.00
4 −2880000.00 −796000.00 Sellerie Bran 320000.00 786000.00
5 −2610000.00 −739500.00 Sellerie Bran 290000.00 673000.00
6 −720000.00 −588500.00 Paprika Balon 80000.00 371000.00
7 −1440000.00 −495000.00 Sellerie Balon 160000.00 184000.00
8 −270000.00 −554500.00 Sellerie Balon 30000.00 303000.00
9 −2250000.00 −649500.00 Sellerie Sansa 250000.00 493000.00
10 −2070000.00 −769500.00 Lauch Sansa 230000.00 733000.00
11 −1620000.00 −694000.00 Paprika Renly 180000.00 582000.00
12 −1890000.00 −622000.00 Lauch Sansa 210000.00 438000.00
13 −2250000.00 −708500.00 Sellerie Bran 250000.00 611000.00
14 −1350000.00 −639000.00 Lauch Renly 150000.00 472000.00
15 −2160000.00 −662000.00 Sellerie Sansa 240000.00 518000.00
16 −2160000.00 −651500.00 Lauch Bran 240000.00 497000.00
17 −1710000.00 −657000.00 Ingwer Renly 190000.00 508000.00
18 −1890000.00 −556500.00 Sellerie Renly 210000.00 307000.00
19 −2250000.00 −806000.00 Paprika Sansa 250000.00 806000.00
20 −1530000.00 −698500.00 Tomate Balon 170000.00 591000.00

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(17:20) |>
    select(X, V, U) |>
    arrange(U, V)
Codefragment 2
DF |>
    slice(2:5) |>
    select(X, V, U) |>
    arrange(V, U)
Codefragment 3
DF |>
    filter(V > -654250 & V < -555500) |>
    select(X, V, U) |>
    arrange(U, V)
Codefragment 4
DF |>
    filter(U > -2205000 & U < -1530000) |>
    select(W, U, V) |>
    arrange(V, U)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
W U V
Lauch −2070000.00 −769500.00
Paprika −1620000.00 −694000.00
Sellerie −2160000.00 −662000.00
Ingwer −1710000.00 −657000.00
Lauch −2160000.00 −651500.00
Lauch −1890000.00 −622000.00
Sellerie −1890000.00 −556500.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
X V U
Bran −796000.00 −2880000.00
Bran −739500.00 −2610000.00
Balon −639000.00 −900000.00
Renly −584500.00 −1530000.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
X V U
Sansa −649500.00 −2250000.00
Bran −651500.00 −2160000.00
Sansa −622000.00 −1890000.00
Renly −556500.00 −1890000.00
Renly −584500.00 −1530000.00
Renly −639000.00 −1350000.00
Balon −639000.00 −900000.00
Balon −588500.00 −720000.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
X V U
Sansa −806000.00 −2250000.00
Renly −556500.00 −1890000.00
Renly −657000.00 −1710000.00
Balon −698500.00 −1530000.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 2
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 1

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

T U V W X Y
1 Joffrey −18510.00 1060.00 0.35 Avocado 0.50
2 Bran −21180.00 1950.00 0.70 Mangold 1.00
3 Robb −25650.00 3440.00 0.91 Mangold 1.30
4 Robb −26820.00 3830.00 1.19 Mangold 1.70
5 Robb −28530.00 4400.00 0.98 Tomate 1.40
6 Stannis −25920.00 3530.00 1.47 Tomate 2.10
7 Stannis −23310.00 2660.00 1.05 Zucchini 1.50
8 Stannis −29070.00 4580.00 1.89 Mangold 2.70
9 Bran −19920.00 1530.00 0.84 Zucchini 1.20
10 Bran −23430.00 2700.00 0.91 Sellerie 1.30
11 Joffrey −23250.00 2640.00 0.35 Sellerie 0.50
12 Joffrey −25680.00 3450.00 0.28 Tomate 0.40
13 Bran −27720.00 4130.00 0.91 Mangold 1.30
14 Stannis −25530.00 3400.00 1.61 Sellerie 2.30
15 Stannis −25950.00 3540.00 1.54 Sellerie 2.20
16 Joffrey −20400.00 1690.00 0.77 Tomate 1.10
17 Robb −27690.00 4120.00 1.47 Avocado 2.10
18 Joffrey −24930.00 3200.00 0.21 Sellerie 0.30
19 Joffrey −25080.00 3250.00 0.35 Mangold 0.50
20 Bran −24570.00 3080.00 0.70 Tomate 1.00
21 Robb −30660.00 5110.00 1.05 Zucchini 1.50
22 Stannis −27030.00 3900.00 1.33 Mangold 1.90
23 Bran −21450.00 2040.00 0.98 Zucchini 1.40

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    slice(20:23) |>
    select(T, W, U) |>
    arrange(W, U)
Codefragment 2
DF |>
    filter(Y > 0.5 & Y < 1.3) |>
    select(X, Y, W) |>
    arrange(Y, W)
Codefragment 3
DF |>
    filter(W > 0.35 & W < 0.91) |>
    select(T, W, U) |>
    arrange(U, W)
Codefragment 4
DF |>
    slice(4:7) |>
    select(X, Y, W) |>
    arrange(W, Y)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
X Y W
Tomate 1.40 0.98
Zucchini 1.50 1.05
Mangold 1.70 1.19
Tomate 2.10 1.47


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
T W U
Bran 0.91 −27720.00
Robb 0.91 −25650.00
Bran 0.70 −24570.00
Bran 0.91 −23430.00
Bran 0.70 −21180.00
Joffrey 0.77 −20400.00
Bran 0.84 −19920.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
T W U
Bran 0.70 −24570.00
Bran 0.98 −21450.00
Robb 1.05 −30660.00
Stannis 1.33 −27030.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
X Y W
Mangold 1.00 0.70
Tomate 1.00 0.70
Tomate 1.10 0.77
Zucchini 1.20 0.84

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

B C D E F G
1 2.20 8500.00 1700.00 Stannis 8.94 Pilz
2 3.56 11500.00 2300.00 Stannis 13.02 Gurke
3 3.61 8500.00 1700.00 Daenerys 13.17 Pilz
4 3.10 2500.00 500.00 Robb 11.64 Pilz
5 4.35 8500.00 1700.00 Daenerys 15.39 Tomate
6 3.93 9000.00 1800.00 Stannis 14.13 Tomate
7 3.06 11000.00 2200.00 Stannis 11.52 Gurke
8 2.73 7000.00 1400.00 Daenerys 10.53 Gurke
9 2.12 1000.00 200.00 Robb 8.70 Paprika
10 3.64 5500.00 1100.00 Daenerys 13.26 Tomate
11 2.97 5000.00 1000.00 Daenerys 11.25 Gurke
12 1.30 5000.00 1000.00 Robb 6.24 Paprika
13 2.17 4500.00 900.00 Robb 8.85 Paprika
14 2.58 3000.00 600.00 Robb 10.08 Pilz
15 2.43 1000.00 200.00 Robb 9.63 Gurke
16 3.11 6000.00 1200.00 Daenerys 11.67 Pilz
17 0.78 2000.00 400.00 Robb 4.68 Pilz
18 3.17 9500.00 1900.00 Stannis 11.85 Paprika
19 3.50 11500.00 2300.00 Stannis 12.84 Paprika
20 2.97 6500.00 1300.00 Daenerys 11.25 Tomate
21 4.34 10000.00 2000.00 Stannis 15.36 Gurke

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(C > 3000 & C < 8500) |>
    select(E, C, B) |>
    arrange(B, C)
Codefragment 2
DF |>
    filter(C > 5000 & C < 8500) |>
    select(E, C, B) |>
    arrange(B, C)
Codefragment 3
DF |>
    slice(1:5) |>
    select(G, C, D) |>
    arrange(D, C)
Codefragment 4
DF |>
    slice(4:9) |>
    select(E, C, B) |>
    arrange(B, C)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
E C B
Robb 1000.00 2.12
Daenerys 7000.00 2.73
Stannis 11000.00 3.06
Robb 2500.00 3.10
Stannis 9000.00 3.93
Daenerys 8500.00 4.35


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
E C B
Robb 5000.00 1.30
Robb 4500.00 2.17
Daenerys 7000.00 2.73
Daenerys 5000.00 2.97
Daenerys 6500.00 2.97
Daenerys 6000.00 3.11
Daenerys 5500.00 3.64


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
G C D
Pilz 2500.00 500.00
Pilz 8500.00 1700.00
Pilz 8500.00 1700.00
Tomate 8500.00 1700.00
Gurke 11500.00 2300.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
E C B
Daenerys 7000.00 2.73
Daenerys 6500.00 2.97
Daenerys 6000.00 3.11
Daenerys 5500.00 3.64

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2

Die Daten folgender Tabelle sind in R als tibble mit dem Bezeichner DF gegeben:

T U V W X Y
1 Daenerys −0.21 −42.00 −60.00 0.19 Ingwer
2 Brienne −0.17 35.00 50.00 0.10 Lauch
3 Cersei −0.24 −98.00 −140.00 0.25 Ingwer
4 Daenerys −0.15 −35.00 −50.00 0.06 Mangold
5 Brienne −0.20 −14.00 −20.00 0.18 Mangold
6 Joffrey −0.20 −35.00 −50.00 0.16 Ingwer
7 Brienne −0.16 −42.00 −60.00 0.09 Broccoli
8 Daenerys −0.25 −84.00 −120.00 0.27 Mangold
9 Cersei −0.22 −126.00 −180.00 0.22 Paprika
10 Cersei −0.26 −98.00 −140.00 0.28 Lauch
11 Daenerys −0.14 −49.00 −70.00 0.06 Mangold
12 Brienne −0.16 −14.00 −20.00 0.10 Broccoli
13 Joffrey −0.14 −35.00 −50.00 0.06 Lauch
14 Brienne −0.24 −21.00 −30.00 0.25 Mangold
15 Daenerys −0.23 −84.00 −120.00 0.24 Lauch
16 Cersei −0.26 −119.00 −170.00 0.29 Paprika
17 Cersei −0.23 −119.00 −170.00 0.23 Mangold
18 Joffrey −0.17 −70.00 −100.00 0.11 Paprika
19 Brienne −0.25 −14.00 −20.00 0.28 Ingwer
20 Joffrey −0.25 −63.00 −90.00 0.26 Mangold
21 Cersei −0.27 −140.00 −200.00 0.31 Mangold
22 Daenerys −0.25 −63.00 −90.00 0.27 Ingwer
23 Joffrey −0.23 −49.00 −70.00 0.23 Lauch

Gegeben sind außerdem die folgenden vier Codefragmente:

Codefragment 1
DF |>
    filter(X > 0.099 & X < 0.242) |>
    select(Y, X, W) |>
    arrange(X, W)
Codefragment 2
DF |>
    filter(X > 0.227 & X < 0.284) |>
    select(Y, X, W) |>
    arrange(W, X)
Codefragment 3
DF |>
    slice(19:22) |>
    select(Y, X, W) |>
    arrange(X, W)
Codefragment 4
DF |>
    slice(18:21) |>
    select(Y, X, W) |>
    arrange(X, W)


Die folgende Ausgabetabelle a gehört zu Codefragment Nr.
Ausgabetabelle a.
Y X W
Mangold 0.26 −90.00
Ingwer 0.27 −90.00
Ingwer 0.28 −20.00
Mangold 0.31 −200.00


Die folgende Ausgabetabelle b gehört zu Codefragment Nr.
Ausgabetabelle b.
Y X W
Paprika 0.11 −100.00
Mangold 0.26 −90.00
Ingwer 0.28 −20.00
Mangold 0.31 −200.00


Die folgende Ausgabetabelle c gehört zu Codefragment Nr.
Ausgabetabelle c.
Y X W
Lauch 0.10 50.00
Paprika 0.11 −100.00
Ingwer 0.16 −50.00
Mangold 0.18 −20.00
Ingwer 0.19 −60.00
Paprika 0.22 −180.00
Mangold 0.23 −170.00
Lauch 0.23 −70.00


Die folgende Ausgabetabelle d gehört zu Codefragment Nr.
Ausgabetabelle d.
Y X W
Ingwer 0.25 −140.00
Lauch 0.24 −120.00
Mangold 0.27 −120.00
Mangold 0.26 −90.00
Ingwer 0.27 −90.00
Lauch 0.23 −70.00
Mangold 0.25 −30.00
Ingwer 0.28 −20.00

Wählen Sie jeweils zu den Buchstaben der Ergebnistabellen die Nummer (1, 2, 3, 4) des jeweiligen Codefragmentes, das diese ergibt.

  • Ausgabetabelle a gehört zum Codeblock mit der Nr. 3
  • Ausgabetabelle b gehört zum Codeblock mit der Nr. 4
  • Ausgabetabelle c gehört zum Codeblock mit der Nr. 1
  • Ausgabetabelle d gehört zum Codeblock mit der Nr. 2