我有一个基本上显示棒球运动员及其位置的数据集:
*Player Position*
John Smith P
Fred Smith 1B
Al Johnson 2B
以此类推。我想一次从这个仅使用R的sample()函数的数据集中随机采样9个玩家。但是,从每个采样中,我只希望获得每个位置的一个,即1P,1 1B,1 2B,依此类推...
我该怎么办?
谢谢。
答案 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]