Ich möchte Zeilen aus einem Datenrahmen pro Gruppe probieren. Aber hier ist der Haken, ich möchte eine andere Anzahl von Datensätzen basierend auf Daten aus einer anderen Tabelle probieren. Hier sind meine reproduzierbaren Daten:Sampling unterschiedliche Anzahl von Zeilen nach Gruppe in dplyr Ordnungswidriges
df <- data_frame(
Stratum = rep(c("High","Medium","Low"), 10),
id = c(1:30),
Value = runif(30)
)
sampleGuide <- data_frame(
Stratum = c("High","Medium","Low"),
Surveys = c(3,2,5)
)
Ausgabe sollte wie folgt aussehen:
# A tibble: 10 × 2
Stratum Value
<chr> <dbl>
1 High 0.21504972
2 High 0.71069005
3 High 0.09286843
4 Medium 0.52553056
5 Medium 0.06682459
6 Low 0.38793128
7 Low 0.01285081
8 Low 0.87865734
9 Low 0.09100829
10 Low 0.14851919
Hier ist mein arbeitsfreien Versuch
> df %>%
+ left_join(sampleGuide, by = "Stratum") %>%
+ group_by(Stratum) %>%
+ sample_n(unique(Surveys))
Error in unique(Surveys) : object 'Surveys' not found
Auch
> df %>%
+ group_by(Stratum) %>%
+ nest() %>%
+ left_join(sampleGuide, by = "Stratum") %>%
+ mutate(sample = map(., ~ sample_n(data, Surveys)))
Error in mutate_impl(.data, dots) :
Don't know how to sample from objects of class function
Es scheint wie sample_n
erfordert Die size
soll eine einzelne Nummer sein. Irgendwelche Ideen?
Ich bin nur auf der Suche nach tidyverse
Lösungen. Extra Punkte für purrr
!
This war ein ähnliches Problem, aber ich bin nicht mit der akzeptierten Antwort zufrieden, weil IRL die Anzahl der Schichten, mit denen ich es zu tun habe, groß ist.