Daten laden

Laden Sie die Data Frames auf vom IPS-Server:

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
url <- "https://www.phonetik.uni-muenchen.de/studium_lehre/lehrmaterialien/R_speech_processing/Rdf/"
auf.df = read.table(file.path(url, "auf.txt"))

Q & A’s

1. Basics

  • Q1.1: Erstellen Sie einen Vektor namens num, der diese Elemente enthält: 3, 10.15, -39.
num <- c(3, 10.15, -39)
num
## [1]   3.00  10.15 -39.00
  • Q1.2: Summieren Sie mittels einer Funktion alle Elemente des Vektors num.
sum(num)
## [1] -25.85
  • Q1.3: Multiplizieren Sie jedes Element des Vektors num mit 10 und speichern Sie das Ergebnis in einer Variable namens x.
x <- num * 10
x
## [1]   30.0  101.5 -390.0
  • Q1.4: Erstellen Sie die Schriftzeichen-Variable name, die Ihren Namen enthält.
name <- "Mein Name"
name
## [1] "Mein Name"
  • Q1.5: Nutzen Sie eine Funktion, um den Inhalt der Variable name drei Mal auszugeben.
rep(name, times = 3)
## [1] "Mein Name" "Mein Name" "Mein Name"
  • Q1.6: Erstellen Sie mit den Funktionen c() und rep() einen Vektor namens buchstaben mit dem Inhalt: “a” “a” “a” “b” “b” “b” “c” “c” “c” “d” “d” “d” “e” “e” “e”.
buchstaben <- rep(c("a", "b", "c", "d", "e"), each = 3)
buchstaben
##  [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d" "e" "e" "e"
# Alternativ:
buchstaben <- rep(letters[1:5], each = 3)
buchstaben
##  [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d" "e" "e" "e"
  • Q1.7: Lassen Sie sich mittels einer Funktion nur die einzigartigen Elemente des Vektors buchstaben ausgeben (d.h. entfernen Sie die Duplikate).
unique(buchstaben)
## [1] "a" "b" "c" "d" "e"
  • Q1.8: Erstellen Sie einen Vektor mit Ganzzahlen zwischen -3 und +7. Berechnen Sie die Summe der quadrierten Werte davon; dividieren Sie zusätzlich diese Summe durch die Anzahl der Elemente im Vektor.
vec <- -3:7
sum(vec^2)/length(vec)
## [1] 14
  • Q1.9: Erstellen Sie mittels einer Funktion einen Vektor mit dem Inhalt: “10.Z” “11.Z” “12.Z” “13.Z” “14.Z” “15.Z” “16.Z” “17.Z” “18.Z” “19.Z” “20.Z”.
paste(10:20, "Z", sep = ".")
##  [1] "10.Z" "11.Z" "12.Z" "13.Z" "14.Z" "15.Z" "16.Z" "17.Z" "18.Z" "19.Z"
## [11] "20.Z"
  • Q1.10: Erstellen Sie mittels einer Funktion einen Vektor namens z, der folgende Elemente enthält: 1 1 3 3 6 6 1 1 3 3 6 6 1 1 3 3 6 6 1 1 3 3 6 6.
z <- rep(c(1, 3, 6), each = 2, times = 4)
z
##  [1] 1 1 3 3 6 6 1 1 3 3 6 6 1 1 3 3 6 6 1 1 3 3 6 6
  • Q1.11: Überprüfen Sie, wie häufig die Zahlen 1, 3, und 6 im Vektor z vorkommen.
table(z)
## z
## 1 3 6 
## 8 8 8
  • Q1.12: Erstellen Sie mittels einer Funktion eine Zahlensequenz aus 15 Zahlen, die bei 1 beginnen und bei 35 aufhören.
seq(from = 1, to = 35, length.out = 15)
##  [1]  1.000000  3.428571  5.857143  8.285714 10.714286 13.142857 15.571429
##  [8] 18.000000 20.428571 22.857143 25.285714 27.714286 30.142857 32.571429
## [15] 35.000000
  • Q1.13: Erstellen Sie mittels einer Funktion eine Zahlensequenz von 100 beginnend rückwärts bis 50, wobei die Zahlen jeweils einen Abstand von 3.5 haben sollen. Speichern Sie das Ergebnis in der Variable zahlen ab.
zahlen <- seq(from = 100, to = 50, by = -3.5)
zahlen
##  [1] 100.0  96.5  93.0  89.5  86.0  82.5  79.0  75.5  72.0  68.5  65.0  61.5
## [13]  58.0  54.5  51.0
  • Q1.14: Ziehen Sie die Quadratwurzel aus allen Zahlen im Vektor zahlen.
sqrt(zahlen)
##  [1] 10.000000  9.823441  9.643651  9.460444  9.273618  9.082951  8.888194
##  [8]  8.689074  8.485281  8.276473  8.062258  7.842194  7.615773  7.382412
## [15]  7.141428
zahlen^0.5
##  [1] 10.000000  9.823441  9.643651  9.460444  9.273618  9.082951  8.888194
##  [8]  8.689074  8.485281  8.276473  8.062258  7.842194  7.615773  7.382412
## [15]  7.141428

2. Arbeit mit Data Frames

  • Q2.1: Lassen Sie sich die Dimensionen (Zeilen- und Spaltenzahl) des Data Frames auf.df ausgeben.
dim(auf.df)
## [1] 20  4
# Alternativ:
auf.df %>% dim()
## [1] 20  4
  • Q2.2: Lassen Sie die ersten paar Beobachtungen von dem Data Frame auf.df auf dem Bildschirm erscheinen.
head(auf.df)
##    RT Vpn Lang Monat
## 1 121  S1    F    0m
## 2 192  S2    F    0m
## 3 110  S3    F    0m
## 4 130  S4    F    0m
## 5 180  S5    F    0m
## 6  87  S6    E    0m
# Alternativ:
auf.df %>% head()
##    RT Vpn Lang Monat
## 1 121  S1    F    0m
## 2 192  S2    F    0m
## 3 110  S3    F    0m
## 4 130  S4    F    0m
## 5 180  S5    F    0m
## 6  87  S6    E    0m
  • Q2.3: 10 Sprecher, 5 aus München und 5 aus Wien hatten diese F1-Werte (in Hz) in der Produktion von [I]-Vokalen (die ersten 5 Werte sind von den Münchnern): 546, 304, 435, 461, 473, 318, 337, 340, 432, 426. Erzeugen Sie dafür einen Data Frame mit Namen f.df und mit Variablen F1, Dialekt (um zwischen M und W für München und Wien zu unterscheiden) und um den Sprecher zu identifizieren (verwenden Sie dafür S1, S2, … S10).
Dialekt <- c(rep("M", 5), rep("W", 5))
Sprecher <- paste0("S", 1:10)
F1 <- c(546, 304, 435, 461, 473, 318, 337, 340, 432, 426)
d.df <- data.frame(F1, Dialekt, Sprecher)
  • Q2.4: Legen Sie den oben erzeugten Data Frame auf Ihrer Festplatte ab.
# mit Namen d.df.txt
write.table(d.df, file = "d.df.txt", quote=F)
  • Q2.5: Ergänzen Sie Ihren auf der Festplatte abgelegten Data Frame mit einem neuen Sprecher aus Wien und mit einem F1 Wert von 288 Hz, indem Sie den Data Frame in einem Text-Editor öffnen.

  • Q2.6: Lesen Sie den von Ihnen modifizierten Data Frame in R ein mit Objektnamen d2.df.

d2.df <- read.table("d.df.txt")
  • Q2.7: Verifizieren Sie, dass Ihr Date Frame aus 11 Beobachtungen und 3 Variablen besteht.
dim(d2.df)