Samples
In dieser Session wollen wir uns mit zufälligen Ziehungen aus einem Vektor bzw. aus unseren Daten beschäftigen. Dies kann sinnvoll sein, um z.B. Berechnung an einer Zufallsstichprobe aus unserem Gesamt-Datensatz zu erproben.
sample()-Funktion
Die sample()-Funktion gibt uns die Möglichkeit, eine Zufallsstichprobe zu ziehen. Hierfür müssen wir als Argumente übergeben, welche Daten wir übergeben wollen, wieviele Zufallsziehungen wir haben wollen, und ob Elemente aus den Daten mehrfach in den Ziehungen vorhanden sein können (replace = T/F). Als Beispiel wollen wir aus den Zahlen von 1 bis 100 genau 30 zufällige Ziehungen erhalten:
a <- sample(1:100, 30)
a
## [1] 92 87 75 67 56 43 31 42 86 59 55 38 2 14 25 21 64 20 66 24 88 26 71 13 58
## [26] 17 9 76 65 94
Um das Argument “replace =” besser zu verstehen, wollen wir nun 30 zufällige Ziehungen aus den Zahlen von 1 bis 10 erhalten. Dies geht natürlich nur, wenn wir Zahlen auch mehrfach ziehen können:
a <- sample(1:10, 30, replace = T)
a
## [1] 3 1 5 4 8 1 6 7 7 4 3 5 6 7 3 6 7 7 2 9 4 1 5 4 2
## [26] 4 10 4 8 10
Würden wir das replace-Argument auf FALSE setzen, so müssen wir mit einer Fehlermeldung rechnen. Hier sagt uns R, dass wir logischerweise nicht mehr Zahlen einmalig aus unserem Vektor ziehen können als wir Elemente im Vektor haben. Aus den Zahlen von 1 bis 10 können also maximal 10 Zahlen gezogen werden, wenn die Zahlen in der Zufallsstichprobe nur einmal enthalten sein sollen.
Wiederholung
Zur Wiederholung erstellen wir uns noch einmal eine Zufallsstichprobe von 30 Werten aus den Zahlen von 1 bis 100:
a <- sample(1:100, 30)
a
## [1] 79 61 35 36 20 23 10 31 96 14 72 25 54 85 18 45 74 9 93 69 43 48 3 50 40
## [26] 80 55 98 90 92
Nun wollen wir den neu entstandenen Vektor einmal aufsteigend und einmal absteigend sortieren:
a <- sort(a)
a
## [1] 3 9 10 14 18 20 23 25 31 35 36 40 43 45 48 50 54 55 61 69 72 74 79 80 85
## [26] 90 92 93 96 98
a <- sort(a, decreasing = T)
a
## [1] 98 96 93 92 90 85 80 79 74 72 69 61 55 54 50 48 45 43 40 36 35 31 25 23 20
## [26] 18 14 10 9 3
Als letztes wollen wir noch einmal die rev()-Funktion anwenden um die Reihenfolge der Elemte in Vektor a umzukehren:
b <- rev(a)
b
## [1] 3 9 10 14 18 20 23 25 31 35 36 40 43 45 48 50 54 55 61 69 72 74 79 80 85
## [26] 90 92 93 96 98