3
データフレームの行をグループごとにサンプリングしたいと思います。しかしここにキャッチがあります。別のテーブルのデータに基づいて、異なる数のレコードをサンプルしたいと思います。ここに私の再現性のあるデータである:dplyr tidyverseでグループごとに異なる行数をサンプリングする
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)
)
出力は次のようになります。ここでは
# 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
は私の非稼働の試み
> df %>%
+ left_join(sampleGuide, by = "Stratum") %>%
+ group_by(Stratum) %>%
+ sample_n(unique(Surveys))
Error in unique(Surveys) : object 'Surveys' not found
また
> 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
であることはsample_n
のように思えます要求するsize
は単一の番号にする必要があります。何か案は?
私はtidyverse
ソリューションをお探ししています。追加ポイントはpurrr
です!
This同様の問題でしたが、私が扱っている地層の数が多いため、受け入れられた答えに満足できません。