Если вы хотите использовать столбец stats
для взвешивания вероятности выбора при втором розыгрыше (выбирая 1 команду из 2 уже выбранных), вы можете использовать следующую функцию. Аргумент prob
для sample
может быть вектором вероятности весами . Таким образом, вам не нужно вычислять фактические пропорции вручную - просто укажите столбец stats
, и R сделает то, что вы хотите.
game <- function(df){
x <- 1:nrow(df)
a1 <- df[sample((x),2),]
y1 <- sample(a1$teams, 1, prob = a1$stats)
df2 <- df[!(df$teams %in% a1$teams),]
x <- 1:nrow(df2)
b1 <- df2[sample(x,2),]
y2 <- sample(b1$teams, 1, prob = b1$stats)
c(y1, y2)
}
Вот ваши данные:
teams <- c('madrid','barcelona','psg','mancunited','mancity','juve')
stats <- c(14, 14.5, 13, 10, 13.4, 13.7)
df <- data.frame(teams, stats) # R 4.0.0 no need to convert strings to factors.
Репликация 10 000 игр:
games <- t(replicate(10000, game(df)))
head(games)
# [,1] [,2]
# [1,] "barcelona" "mancity"
# [2,] "madrid" "mancunited"
# [3,] "madrid" "psg"
# [4,] "juve" "psg"
# [5,] "mancity" "barcelona"
# [6,] "mancity" "juve"
Вы можете увидеть, сколько раз каждая команда была выбрана на каждой из ваших фаз.
sort(prop.table(table(games[,1])), decr = TRUE) # phase 1
# barcelona madrid psg juve mancity mancunited
# 0.1797 0.1787 0.1687 0.1677 0.1663 0.1389
sort(prop.table(table(games[,1])), decr = TRUE) # phase 2
# madrid barcelona juve mancity psg mancunited
# 0.1826 0.1755 0.1691 0.1670 0.1663 0.1395