我正在编写一个脚本,可以自动化模拟体育选秀,因为可供选择的球员和每个位置的名单限制。
如果我有三个小组从以下数据框架起草,我将如何构建这样的脚本?
第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
答案 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),]
循环。