Я сгруппировал данные, составленные из учеников, сгруппированных в 160 школах. Я хотел бы взять случайную выборку из 30 школ из этого набора данных. Я жестко запрограммировал решение (см. Ниже), но есть ли функция-обертка или более быстрый способ сделать это в R? Вроде как sample_n () или top_n (), но они возвращают n наблюдений на группу, тогда как я хочу 100% наблюдений от n групп.
# First, some example data. Each row represents one student in a given school, and that student's favourite fruit.
df <- tribble(
~school_id, ~favourite_fruit,
#----------#---------------
1, "apple",
1, "banana",
2, "kiwi",
2, "tomato",
3, "strawberry",
3, "cherry",
4, "orange",
4, "lime"
)
# My hard-coded solution
school_vector <- df %>%
group_by(school_id) %>%
select(school_id) %>%
count() %>%
ungroup() %>%
select(school_id) %>%
sample_n(2)
df_subset <- df %>%
filter(school_id %in% school_vector$school_id) %>%
as_tibble()