Diese Frage basiert auf dem hier gefundenen SO-Beitrag
Ich versuche, eine zufällige Stichprobe von Zeilen in einem Datenrahmen unter Verwendung einer Verschachtelungsbedingung zu extrahieren.
Verwenden des folgenden Dummy-Datensatzes (geändert von iris
):
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 5.3 2.9 1.5 0.2 setosa
5 5.2 3.7 1.3 0.2 virginica
6 4.7 3.2 1.5 0.2 virginica
7 3.9 3.1 1.4 0.2 virginica
8 4.7 3.2 1.3 0.2 virginica
9 4.0 3.1 1.5 0.2 versicolor
10 5.0 3.6 1.4 0.2 versicolor
11 4.6 3.1 1.5 0.2 versicolor
12 5.0 3.6 1.5 0.2 versicolor
Der folgende Code funktioniert gut, um ein einfaches Beispiel von 2 Zeilen zu nehmen:
iris[sample(nrow(iris), 2), ]
Ich möchte jedoch eine Stichprobe von 2 Zeilen für jede Ebene einer bestimmten Variablen ziehen. Erstellen Sie beispielsweise eine Zufallsstichprobe von 2 Zeilen für jede Ebene der Variablen 'Species' wie folgt:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
4 5.3 2.9 1.5 0.2 setosa
6 4.7 3.2 1.5 0.2 virginica
7 3.9 3.1 1.4 0.2 virginica
11 4.6 3.1 1.5 0.2 versicolor
12 5.0 3.6 1.5 0.2 versicolor
Danke für Ihre Hilfe!
Sehr einfach mit dplyr
:
library(dplyr)
iris %>%
group_by(Species) %>%
sample_n(size = 2)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 4.6 3.4 1.4 0.3 setosa
# 2 5.2 3.5 1.5 0.2 setosa
# 3 6.5 2.8 4.6 1.5 versicolor
# 4 5.7 2.8 4.5 1.3 versicolor
# 5 5.8 2.8 5.1 2.4 virginica
# 6 7.7 2.6 6.9 2.3 virginica
Sie können nach beliebig vielen Spalten gruppieren
CO2 %>% group_by(Type, Treatment) %>% sample_n(size = 2)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen