Aufgabe 1: Unterschiedliche Datentypen Verwenden Sie die folgenden Objekte:
t1 <- TRUE
t2 <- FALSE
t3 <- "TRUE"
t4 <- 1
t6 <- "1"
Erläutern Sie an diesem Beispiel die Begriffe R Objekt, Wert bzw. Element und Datenstruktur. Welche Datenstruktur haben die Objekte? Mit welchen der Objekte können Sie Berechnungen Durchführen und welche Datentypen erwarten Sie als Resultate der Berechnungen?
Objekt ist eine wort dem etwas zugewiesen wurde mit dem <- pfeil, kann nur mit buchstabe anfangen
In R bezieht sich der Begriff "element" normalerweise auf die einzelnen Komponenten eines Vektors, einer Liste oder einer anderen Datenstruktur.
Eine Datenstruktur in der Informatik ist eine organisierte Methode zum Speichern und Verwalten von Daten. Datenstrukturen ermöglichen es, Informationen auf effiziente Weise zu strukturieren, zu speichern und darauf zuzugreifen. Die Wahl der geeigneten Datenstruktur hängt von der Art der Daten und den erforderlichen Operationen ab.
Aufgabe 2: Vektoren Erstellen und speichern Sie einen Vektor a mit folgenden Elementen:
• Eine Sequenz mit 5 Einträgen von 3 bis 6 (inklusive)
• Eine zweifache Wiederholung des Vektors c(2, -5.1, -33)
• Dem Wert 7 42 + 2
• Erstellen Sie ein neues Objekt b, das nur den fünftgrößten Wert des Vektors a enthält.
• Erstellen Sie ein drittes Objekt c, das alle Elemente aus a in zufälliger Reihenfolge enthält.
# Sequenz mit 5 Einträgen von 3 bis 6
a_part1<- c(3,4,5,5.5,6)
# Zweifache Wiederholung des Vektors c(2, -5.1, -33)
a_part2 <- rep(c(2, -5.1, -33), times = 2)
# und Berechnung von 7/42 + 2
a_part3 <- c(7/42 + 2)
# Gesamter Vektor a
a <- c(a_part1, a_part2, a_part3)
# Erstellen eines neuen Objekts b mit dem fünftgrößten Wert von a
b <- sort(a, decreasing = TRUE)[5]
# Erstellen eines dritten Objekts c mit allen Elementen von a in zufälliger Reihenfolge
c <- sample(a)
a,b,c = ausgabe der Ergebnisse
Im Rahmen einer Betriebsinventur wurden an 4 Probekreisen von je 20 m2 BHDs und Höhen gemessen sowie die Baumarten bestimmt. Die Probekreise 1 bis 3 sind reine Buchenplots. Probekreis 3 ist ein reiner Eichenplot. Probekreis 4 ist wie unten angegeben gemischt. Erstellen Sie sinnvolle Vektoren für die folgenden Erhebungen:
Probekreis 1: c(30.3, 32.4, 33.8, 32.6, 32.8) # Höhen [m] c(39.8, 31.8, 34.5, 31.6, 36.5) # BHDs [cm] #
Probekreis 2: c(24.6, 23.2, 24.2, 25.2, 22.2, 24.4, 25.1) # Höhen [m] c(24.7, 23.3, 23.1, 27.0, 27.4, 27.4, 22.9) # BHDs [cm] #
Probekreis 3: c(23.4, 24.5, 25.8, 25.5, 24.5, 24.2) # Höhen [m] c(27.4, 28.9, 31.9, 30.2, 30.0, 31.1) # BHDs [cm] #
Probekreis 4: c(17.3, 17.7, 17.3, 23.0, 23.9, 22.9, 22.5) # Höhen [m] c(17.2, 18.8, 16.6, 25.2, 26.6, 26.9, 25.5) # BHDs [cm] c("Ei", "Ei", "Ei", "Bu", "Bu", "Bu", "Bu") # Arten
a) Berechnen und speichern Sie nun die Grundflächen der Bäume. b) Berechnen Sie daraufhin die Bestandesgrundfläche des Waldes, in dem die Probekreise liegen. c) Nehmen Sie an, dass alle Buchen das selbe Alter haben. Welcher Plot hat die schlechteste Bonität?
Aufgabe 3
# Probekreis 1
höhen_pk1 <- c(30.3, 32.4, 33.8, 32.6, 32.8)
bhd_pk1 <- c(39.8, 31.8, 34.5, 31.6, 36.5)
# Probekreis 2
höhen_pk2 <- c(24.6, 23.2, 24.2, 25.2, 22.2, 24.4, 25.1)
bhd_pk2 <- c(24.7, 23.3, 23.1, 27.0, 27.4, 27.4, 22.9)
# Probekreis 3
höhen_pk3 <- c(23.4, 24.5, 25.8, 25.5, 24.5, 24.2)
bhd_pk3 <- c(27.4, 28.9, 31.9, 30.2, 30.0, 31.1)
# Probekreis 4
höhen_pk4 <- c(17.3, 17.7, 17.3, 23.0, 23.9, 22.9, 22.5)
bhd_pk4 <- c(17.2, 18.8, 16.6, 25.2, 26.6, 26.9, 25.5)
arten_pk4 <- c("Ei", "Ei", "Ei", "Bu", "Bu", "Bu", "Bu")
# Grundflächen berechnen und speichern
grundfläche_pk1 <- pi * (bhd_pk1/200)^2
grundfläche_pk2 <- pi * (bhd_pk2/200)^2
grundfläche_pk3 <- pi * (bhd_pk3/200)^2
grundfläche_pk4 <- pi * (bhd_pk4/200)^2
# Bestandesgrundfläche des Waldes berechnen
bestandesgrundfläche <- sum(grundfläche_pk1, grundfläche_pk2, grundfläche_pk3, grundfläche_pk4)
# Bonität berechnen (je größer, desto schlechter)
bonität_pk1 <- sum(bhd_pk1)
bonität_pk2 <- sum(bhd_pk2)
bonität_pk3 <- sum(bhd_pk3)
bonität_pk4 <- sum(bhd_pk4)
Aufgabe 4:
Erstellen eines Factors Verwenden Sie folgenden Vektor:
v <- c("shrub", "shrub", "lichen", "tree", "lichen", "herb", "tree", "herb", "lichen", "tree", "herb", "lichen", "herb", "shrub", "lichen") und erstellen Sie einen Faktor-Vektor mit den folgenden Ausprägungen Baum, Strauch, Krautig und Flechte. Erstellen Sie den Faktor so, dass die Bezeichnung immer der englischen Übersetzung entspricht. Strauch soll die Referenzkategorie darstellen. Die Anordnung der anderen Kategorien ist nicht relevant.
Aufgabe4
# Gegebener Vektor
v <- c("shrub", "shrub", "lichen", "tree", "lichen", "herb", "tree",
"herb", "lichen", "tree", "herb", "lichen", "herb", "shrub",
"lichen")
# Erstellen des Faktors mit den gewünschten Ausprägungen
faktor_v <- factor(v, levels = c("tree", "shrub", "herb", "lichen"), ordered = TRUE)
# Anzeigen des erstellten Faktors
faktor_v
Aufgabe 5:
Erstellen eines Factors Erstellen Sie aus v eine Faktorvariable.
v <- c("Buche", "Birke", "Birke", "Birke", "Ahorn", "Birke", "Tanne", "Buche", "Fichte", "Tanne", "Tanne", "Tanne", "Eibe", "Ahorn", "Buche")
Fassen Sie nun die die Baumarten Ahorn, Birke, Buche zu Laubholz zusammen, alle anderen Baumarten sollen der Kategorie Nadelholz angehören.
# Erstellen des Faktors mit den gewünschten Gruppierungen
baumarten_faktor <- factor(v, levels = c("Buche", "Birke", "Ahorn", "Tanne", "Fichte", "Eibe"))
# Gruppierung von Ahorn, Birke und Buche zu Laubholz, alle anderen zu Nadelholz
baumarten_faktor_gruppiert <- factor(ifelse(baumarten_faktor %in% c("Ahorn", "Birke", "Buche"), "Laubholz", "Nadelholz"))
baumarten_faktor_gruppiert
Aufgabe 6: Anordenen eines Factors Erstellen Sie aus v eine Faktorvariable.
Verwenden Sie erneut den Vektor v, erstellen Sie einen Faktor und ordnen Sie levels nach ihrer aufsteigenden Häufigkeit.
Aufgabe 6
# Erstellen des Faktors und Ordnen der Levels nach ihrer Häufigkeit
baumarten_faktor <- factor(v)
baumarten_faktor_ordnet <- factor(baumarten_faktor, levels = names(sort(table(baumarten_faktor), decreasing = FALSE)))
# Anzeigen des erstellten Faktors mit aufsteigend geordneten Levels
baumarten_faktor_ordnet
Aufgabe 7:
Sie haben zwei Vektoren v1 und v2. In dem Vektor v1 ist ein Messwert für jeden untersuchten Baum gespeichert und im Vektor v2 ist die Baumart gespecihert.
v1 <- c(7.96, 5.42, 2.33, 2.31, 5.24, 10.06, 3.92, 7.13, 3.67, 5.77)
v2 <- c("Unbekannt", "Tanne", "Buche", "Tanne", "Tanne", "Unbekannt", "Tanne", "Tanne", "Unbekannt", "Unbekannt")
• a) Ersetzen Sie den Eintrag Unbekannt mit NA in v2.
• b) Als zweiten Schritt berechnen Sie dann den Mittelwert von v1 jeweils für die Fälle, wenn v2 nicht NA ist bzw. NA ist.
Aufgabe 7
v2[v2 == "Unbekannt"] <- NA
mittelwert_nicht_na<- mean(v1[!is.na(v2)])
mittelwert_na<- mean(v1[is.na(v2)])
print(mittelwert_na)
print(mittelwert_nicht_na)
Aufgabe 8
Auf einer Holzsubmission wurden folgende Erlöse [EUR] für Eichenstämme aus Ihrem Revier erzielt. Ihr Praktikant hat die Volumina [m$ˆ3] der Stämme und deren Qualität zuvor eingeschätzt. Folgende Daten liegen Ihnen vor:
erloes <- c(155, 450, 550, 1500, 1900, 600)
volumen <- c(0.25, 0.75, NA, 1, 0, 0.45)
qualitaet <- c("A", "A", "A", "Furnier", "Furnier", "Furnier")
• a) Berechnen und speichern Sie für jeden Stamm den Erlös je Volumen [EUR / mˆ3].
• b) Berechnen Sie aus diesem neuen Objekt die durchschnittlichen Erlöse je Qualitätsgruppe.
a
berrechnen
erloes_pro_volumen <- erloes / volumen
erloes_pro_volumen
b
library(dplyr)
df <- data.frame(EPV = erloes_pro_volumen, Q = qualitaet)
durchschnitt <- df %>%
group_by(Q) %>%
summarise(mean_erloes = mean(EPV, na.rm = TRUE))
durchschnitt
Aufgabe 9: Arbeiten mit Data Frames, mtcars
• a) Laden Sie den in R integrierten Data Frame mtcars.
• b) Berechnen Sie das Leistungsgewicht (PS pro lbs) und fügen Sie es dem Data Frame hinzu.
• c) Haben Autos mit 6 Zylindern durchschnittlich ein höheres Leistungsgewicht als Autos mit 4 Zylindern?
• d) Welche Autos mit 4 Zylindern haben ein höheres Leistungsgewicht als das durchschnittliche Auto mit 6 Zylindern? • e) Wie viele dieser Autos aus der Abfrage d) sind auf der Viertelmeile schneller als das langsamste Auto mit 6 Zylindern?
a) mtcars
b) mtcars$leistungsgewicht <- mtcars$hp/mtcars$wt
c) mean(mtcars$leistungsgewicht[mtcars$cyl==4])<mean(mtcars$leistungsgewicht[mtcars$cyl==6])
d) cars_4 <-mtcars[mtcars$cyl==4&mtcars$leistungsgewicht>mean(mtcars$leistungsgewicht[mtcars$cyl==6]),]
e) cars_4$qsec>min(mtcars$qsec[mtcars$cyl]==6)
langsamster_6cyl<- max(mtcars$qsec[mtcars$cyl==6])
sum(cars_4$qsec<langsamster6cyl)
Aufgabe 10: Arbeiten mit Data Frames, iris
• a) Laden Sie den in R integrierten Data Frame ìris.
• b) Welche Arten beinhaltet der Data Frame und wie viele Einträge haben die Arten jeweils?
• c) Unterscheiden sich die durchschnittlichen Sepalumslängen (Kelchblätter) der Arten auf 1 Nachkommastelle gerundet?
• d) Wie viele der drei kleinsten Kelchblätter der durchschnittlich größten Art aus c) sind kleiner als das durchschnittliche Kelchblatt der kleinsten Art aus c)?
• e) Die durchschnittliche Kelchblattlänge aller Arten beträgt 5.8 cm. Gehören alle Exemplare mit einer Kelchblattlänge von (inkl.) 5.7 und (inkl.) 5.9 cm zu der mittleren Art aus c)?
iris
b)
arten_häufigkeit <-table(iris$Species)
arten_häufigkeit
c)
durchschnitts_sepalumslänge <- aggregate(Sepal.Length ~ Species, iris, mean)
durchschnitts_sepalumslänge$Sepal.Length <- round(durchschnitts_sepalumslänge$Sepal.Length,1)
durchschnitts_sepalumslänge
d)
groesste_art <- filter(durchschnitts_sepalumslänge, Sepal.Length == max(Sepal.Length))
kleinste_kelchblaetter_groesste_art <- head(arrange(iris, desc(Sepal.Length)), 3)
anzahl_kleiner <- sum(kleinste_kelchblaetter_groesste_art$Sepal.Length < min(durchschnitts_sepalumslänge$Sepal.Length))
anzahl_kleiner
e)
ausgewaehlte_exemplare <- filter(iris, Sepal.Length >= 5.7 & Sepal.Length <= 5.9)
alle_mittlere_art <- all(ausgewaehlte_exemplare$Species == durchschnitts_sepalumslänge$Species[2])
alle_mittlere_art
Aufgabe 11: x-y Diagramm
• b) Erstellen Sie ein x-y-Punkt-Diagramm mit der Blütenblattlänge (Petal Length) und der Kelchlänge (Sepal Length) mit – einem Hilfsliniennetz im Hintergrund, – einer Legende, – den Mittelwerten der Kelchlängen je Art als horizontale Linien. – Beschriften Sie die Achsen und geben Sie einen Diagrammtitel. Unterscheiden Sie sowohl die Punkte, als auch die horizontalen Linien farblich zwischen den Arten.
Aufgabe 11
a) data(iris)
b)ggplot(iris,aes(x= Petal.Length, y=Sepal.Length, color=Species))+
geom_point()+
geom_hline(data = aggregate(Sepal.Length ~ Species, iris, mean), aes(yintercept = Sepal.Length, color = Species)) +
labs(titel= "Blütenblattlänge vs Kelchlänge",
x="Blütenblattlänge",
y= "Kelchlänge",
color= "Art")
Aufgabe 12: statistische Abbildungen
• b) Erstellen Sie vier Diagramme nebeneinander: – Die linken drei Diagramme sollen Histogramme der Blütenblattlängen (Petal Lengths) nach Art sein. – Definieren Sie unterschiedliche Farben. • c) Das rechte Diagramm soll drei Boxplots der selben Daten zeigen und die Arten in der selben Farbe, wie in b) codieren. Alle Diagramme sollen sinnvoll beschriftet sein
a) data(Iris)
b) par(mfrow=c(1, 4))
hist(iris$Petal.Length[iris$Species == 'setosa'], col = 'red', main = 'Setosa', xlab = 'Blütenblattlänge', ylab = 'Anzahl', xlim = range(iris$Petal.Length), breaks = 20)
hist(iris$Petal.Length[iris$Species == 'versicolor'] , col = 'green', main = 'Versicolor', xlab = 'Blütenblattlänge', ylab = 'Anzahl', xlim = range(iris$Petal.Length), breaks = 20)
hist(iris$Petal.Length[iris$Species == 'virginica'] , col = 'blue', main = 'Virginica', xlab = 'Blütenblattlänge', ylab = 'Anzahl', xlim = range(iris$Petal.Length), breaks = 20)
boxplot(iris$Petal.Length ~ iris$Species, col = c('red', 'green', 'blue'), main = 'Petal Length by Species', ylab = 'Blütenblattlänge', xlab= "Species")
par(mfrow=c(1, 1))
Aufgabe 13: statistische Abbildungen
• b) Erstellen Sie ein Punktdiagramm der Blütenblattlängen (Petal Lengths) über der Kelchlänge (Sepal Length).
– Definieren Sie die Farben der Punkte nach den Lillienarten (Species). – Erstellen Sie eine Legende.
– Fügen Sie lineare Trendlinien hinzu.
– Beschriften Sie die Achsen auf Deutsch
a)data(iris)
b)ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(x = "Kelchlänge", y = "Blütenblattlänge")
Aufgabe 14: Daten verknüpfen
Auf einer Holzsubmission wurden die in tab2 aufgefürten Erlöse [EUR] für Eichenstämme aus Ihrem Revier erzielt. Ihr Praktikant hat zuvor die Volumina [m$ˆ3] der Stämme und deren Qualität eingeschätzt und in tab1 gespeichert. Folgende Daten liegen Ihnen vor:
tab2 <- data.frame(stamm_id = c(1 : 7), erloes = c(155, 450, 550, 1500, 1900, 600, 950))
tab1 <- data.frame(s_id = c(1 : 6, 8), volumen = c(0.25, 0.75, NA, 1, 0, 0.45, 0.9), qualitaet = c("A", "A", "A", "Furnier", "Furnier", "Furnier", "A"))
• a) Verbinden (join) Sie die beiden Tabellen so, dass keine Zeile aus tab2 verlorengeht. Speichern Sie die Tabelle.
• b) Verbinden (join) Sie die beiden Tabellen so, dass die neue Tabelle nur komplett vollständige Zeilen enthält. Speichern Sie die Tabelle. 7
• c) Suchen Sie sich eine der neu entstandenen Tabellen aus, um die durchschnittlichen Erlöse je Volumeneinheit (EUR/m2 ) je Qualitätsgruppe zu berechnen.
a)
merged_table_a <- left_join(tab2, tab1, by = c("stamm_id" = "s_id"))
merged_table_b <- full_join(tab2, tab1, by = c("stamm_id" = "s_id"))
result_table <- merged_table_b %>%
group_by(qualitaet) %>%
summarise(avg_erloes_pro_volumen = mean(erloes / volumen, na.rm = TRUE))
result_table
Aufgabe 15: Tidy data
Ihnen liegen die folgenden Messungen vor aus 2 Probekreisen vor: dat <- data.frame(hoehe.plot1 = c(29.0, 34.5, 34.3, 33.6, 26.0), hoehe.plot2 = c(42.4, 40.3, 40.6, 39.8, 39.6), bhd.plot1 = c(29.2, 29.9, 29.8, 30.1, 30.5), bhd.plot2 = c(41.7, 37.2, 37.6, 39.5, 37.6))
Bringen Sie die Daten in das Tidy, also long, Datenformat. (Hinweis: Sie benötigen das Argument “names_prefix”. Sehen Sie in der Hilfe nach, was das Argument bedeutet.)
tidy_data <- dat %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "measurement"),
names_sep = "_|\\.",
names_prefix = "value",
values_drop_na = TRUE
)
print(tidy_data)
Aufgabe 16: Selektieren und zusammenfassen
• b) Sie überlegen, ob Ihnen ein Mercedes reicht oder, ob Sie lieber einen Ferrari kaufen sollen. Vergleichen Sie die durchschnittliche Leistung (PS, hp) der Mercedesse (Merc) mit der Leistung des Ferraris.
• c) Ist der stärkste Mercedes stärker als der Ferrari?
b)# Durchschnittliche Leistung der Mercedesse
avg_hp_merc <- mean(mtcars$hp[grep("Merc", rownames(mtcars))])
avg_hp_merc
# Durchschnittliche Leistung der Ferraris
avg_hp_ferrari <- mean(mtcars$hp[grep("Ferrari", rownames(mtcars))])
avg_hp_ferrari
c) max_hp_merc <- max(mtcars$hp[grep("Merc", rownames(mtcars))])
max_hp_ferrari <- max(mtcars$hp[grep("Ferrari", rownames(mtcars))])
max_hp_merc
max_hp_ferrari
Aufgabe 17: Selektieren und zusammenfassen
• b) Berechnen Sie das Leistungsgewicht (hp pro lbs) und fügen Sie es dem Data Frame hinzu.
• c) Berechnen Sie das mittlere Leistungsgewicht aller Mercedesse, die 8-Zylinder haben. Ist dieses mittlere Leistungsgewicht höher als das Leistungsgewicht des Ferraris? • d) Sie können sich einfach nicht entscheiden. Ziehen Sie (mit gleicher Wahrscheinlichkeit) zufällig einen der 8-Zylinder Mercedesse oder den Ferrari.
b)mtcars$hp_per_lbs <- mtcars$hp / mtcars$wt
c)mean_hp_per_lbs_merc_8cyl <- mean(mtcars$hp_per_lbs[grep("Merc", rownames(mtcars)) & mtcars$cyl == 8])
hp_per_lbs_ferrari <- mtcars$hp_per_lbs[grep("Ferrari", rownames(mtcars))]
sample( c(rownames(mtcars)[grepl("Merc", rownames(mtcars)) & mtcars$cyl == 8], rownames(mtcars)[grepl("Ferrari", rownames(mtcars))]),1)
Aufgabe 18: Selektieren und zusammenfassen
• Laden Sie den Datensatz mtcars.
a) Wie hoch ist der Anteil der Mazdas im Datensatz?
b) Ziehen Sie zufällig ein Auto aus dem Datensatz.
c) Wiederholen Sie die Ziehung (mit Zurücklegen) 1000-Mal. Wie viele Mazdas erwarten Sie insgesamt zu ziehen? Wie viele Mazdas haben Sie tatsächlich gezogen?
a)anzahl_mazdas <- sum(grepl("Mazda", rownames(mtcars)))
gesamtanzahl_autos <- nrow(mtcars)
anteil_mazdas <- anzahl_mazdas / gesamtanzahl_autos
b)zufaelliges_auto <- sample(rownames(mtcars), 1)
c)anzahl_gezogene_mazdas <- 0
anzahl_wiederholungen <- 1000
for (i in 1:anzahl_wiederholungen) {zufaelliges_auto <- sample(rownames(mtcars), 1, replace = TRUE)
if (grepl("Mazda", zufaelliges_auto)) {
anzahl_gezogene_mazdas <- anzahl_gezogene_mazdas + 1
}
erwartete_anzahl_mazdas <- anzahl_wiederholungen * anzahl_mazdas / gesamtanzahl_autos
erwartete_anzahl_mazdas
anzahl_gezogene_mazdas
Aufgabe 19: Selektieren und zusammenfassen
a) Berechnen Sie folgende Werte separat für Autos mit Automatik- und manueller Schaltung. Speichern Sie die Ergebnisse als Variable erg1:
• Mittlere Zylinderanzahl cyl
• Maximales Gewicht wt
• die Standardabweichung des Gewichts wt
a)autos_automatik <- mtcars[mtcars$am == 1, ]
autos_manuell <- mtcars[mtcars$am == 0, ]
mittel_cyl_automatik <- mean(autos_automatik$cyl)
mittel_cyl_manuell <- mean(autos_manuell$cyl)
max_gewicht_automatik <- max(autos_automatik$wt)
max_gewicht_manuell <- max(autos_manuell$wt)
std_gewicht_automatik <- sd(autos_automatik$wt)
std_gewicht_manuell <- sd(autos_manuell$wt)
erg1<- list( das alles da drüber )
print(erg1)
Aufgabe 20: ‘long’ and ‘wide’ Datenformate
Ihnen liegen folgende BHD-Messungen vor
dat <- tibble( id = 1:3, bhd2015 = c(30, 31, 32), bhd2016 = c(31, 31, 33), bhd2017 = c(34, 32, 33) )
• Bringen Sie die Daten in das lange Datenformat. Definieren Sie sinnvolle Spaltenüberschriften.
dat_long <- pivot_longer(dat, cols = starts_with("bhd"), names_to = "year", values_to = "bhd")
print(dat_long)
Aufgabe 21: ‘for’ Schleife
• Landen Sie den in R integrierten Datensatz mtcars
• Ziehen Sie 500-Mal je 35 Beobachtungen für das Autigewicht (wt).
• Berechnen Sie jeweils den Mittelwert aus den 35 Werten.
• Speichern Sie die 500 Mittelwerte in einem neuen Vektor mittel.
anzahl_beobachtungen <- 35
anzahl_ziehungen <- 500
for (i in 1:anzahl_ziehungen) {
stichprobe_indizes <- sample.int(nrow(mtcars), anzahl_beobachtungen, replace = TRUE)
stichprobe <- mtcars$wt[stichprobe_indizes]
mittel[i] <- mean(stichprobe)
print (mittel)
Aufgabe 22: ‘for’ Schleife
• Simulieren Sie eine faire Münze (die Wahrscheinlichkeiten für Kopf und Zahl sind je 50%). Lassen Sie in die Konsole ausgeben, ob die Münze Kopf oder Zahl anzeigt.
• Wiederholen Sie den Münzwurf (und die Konsolenausgabe) 20 Mal.
• Wie oft zeigt die Münze in Ihrer Simulation Kopf an?
anzahl_wuerfe <- 20
anzahl_kopf <- 0
for (i in 1:anzahl_wuerfe) {
wurf <- sample(0:1, 1)
if (wurf == 1) {
cat("Wurf", i, ": Kopf\n")
anzahl_kopf <- anzahl_kopf + 1
} else {
cat("Wurf", i, ": Zahl\n")
anzahl_wuerfe
anzahl_kopf
Aufgabe 23: ‘while’ Schleife
• Simulieren Sie einen fairen Würfel (die Wahrscheinlichkeiten für jede der 6 Zahlen sind je 1/6).
• Wiederholen Sie den Würfelwurf so lange, bis eine 6 gewürfelt wurde.
• Erzeugen Sie einen Konsolenoutput, der die gewürfelte Zahl ansagt.
• Erzeugen Sie einen Konsolenoutput, der Ihnen ansagt, wie oft Sie gewürfelt haben, bis die 6 gewürfelt wurde.
anzahl_wuerfe <- 0
while (TRUE) {
wurf <- sample(1:6, 1)
anzahl_wuerfe <- anzahl_wuerfe + 1
if (wurf == 6) {
break
cat("Wurf", anzahl_wuerfe + 1, ": Gewürfelte Zahl:", wurf, "\n")
cat("Es wurden", anzahl_wuerfe, "Mal geworfen, bis eine 6 gewürfelt wurde.\n")
Last changed10 months ago