R如何执行“特定”采样

时间:2019-02-14 23:48:45

标签: r

我有一个基本上显示棒球运动员及其位置的数据集:

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

以此类推。我想一次从这个仅使用R的sample()函数的数据集中随机采样9个玩家。但是,从每个采样中,我只希望获得每个位置的一个,即1P,1 1B,1 2B,依此类推...

我该怎么办?

谢谢。

2 个答案:

答案 0 :(得分:2)

这里是使用dplyr的解决方案,假设df是您的数据帧:

library(dplyr)

df %>% 
    group_by(Position) %>% 
    sample_n(1) %>% 
    ungroup() %>% 
    sample_n(9)

答案 1 :(得分:1)

您在这里没有给我们太多信息,但是我将按位置对数据进行分组,然后从每个组中抽取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]