从列表中选择因子而无需替换

时间:2015-10-03 18:10:02

标签: r

我正在编写一个脚本,可以自动化模拟体育选秀,因为可供选择的球员和每个位置的名单限制。

如果我有三个小组从以下数据框架起草,我将如何构建这样的脚本?

第1组使用的排名与第2组和第3组不同,后者正在使用共识;每支球队将起草一个“QB”和一个“RB”,每个球员只能被选中一次(无需替换)。

在我看来,输出将是一个数据框。

players <- c("Dan Marino", "Tony Dorsett", "Joe Montana", "John Elway",
 "Jim Brown", "Barry Sanders")
position <- c("QB", "RB", "QB", "QB", "RB", "RB")
Team1_rank <- c(2,4,5,6,3,1)
consensus_rank <- c(1,6,3,5,2,4)
player_pool <- data.frame(players, position, Team1_rank, consensus_rank)

            players position Team1_rank consensus
1    Dan Marino       QB          2         1
2  Tony Dorsett       RB          4         6
3   Joe Montana       QB          5         3
4    John Elway       QB          6         5
5     Jim Brown       RB          3         2
6 Barry Sanders       RB          1         4

1 个答案:

答案 0 :(得分:0)

如果要对数据帧的行进行采样,请在i索引上使用sample(),即

player_pool[sample(6,6), ]

将随机重组数据帧。如果你只想要特定数量的每种类型的玩家,我会先将数据帧划分为不同的玩家类型,然后在每个玩家类型上进行排序。您还可以指定样本()中每个选择的概率(参见?样本)

如果您希望列表随时间减少,可以设置

player_pool <- player_pool[sample(nrow(player_pool),nrow(player_pool)),]

pick <- player_pool[1,]

player_pool <- player_pool[2:nrow(player_pool),]

循环。