R Как выполнить «специфическую» выборку - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть набор данных, который в основном показывает бейсболистов и их позиции:

*Player       Position*
John Smith       P
Fred Smith      1B
Al Johnson      2B

И так далее.Я хотел бы случайным образом выбрать 9 игроков одновременно из этого набора данных, который просто использует функцию sample () R.Однако из каждой выборки я хотел бы получить только ОДИН из каждой позиции, т. Е. 1P, 1 1B, 1 2B и т. Д. ...

Как я могу это сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы не предоставили нам много информации здесь, но я бы сгруппировал данные по позициям, а затем взял 1 выборку из каждой группы.Использование data.table было бы моим подходом для этого

library(data.table)
setDT(data)

data[, sample(Player, 1), by = Position]

Однако в бейсболе аутфилдеры обычно все группируются как одна позиция - "OF".В этом случае вам нужно будет сделать выборку "OF" 3 раза, а все остальные просто 1. Вы можете использовать оператор if() в аргументе size для этого сценария.

data[, sample(Player, if(Position == "OF") 3 else 1), by = Position]
0 голосов
/ 15 февраля 2019

Вот решение, использующее dplyr, при условии, что df является вашим фреймом данных:

library(dplyr)

df %>% 
    group_by(Position) %>% 
    sample_n(1) %>% 
    ungroup() %>% 
    sample_n(9)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...