总结 R 中的足球博彩赔率
Summarising Football Betting Odds in R
我正在尝试在 R 中创建一个数据框,该数据框将总结基于另一个足球队的投注赔率。
例如,这个非常小的样本 table 包含主队和客队以及各自的赔率。
匹配数据:
关键:HWO(主场获胜赔率)、DO(平局赔率)、AWO(客场获胜赔率)
+----------+----------+------+------+------+
| HomeTeam | AwayTeam | HWO | DO | AWO |
+----------+----------+------+------+------+
| TeamA | TeamB | 1.30 | 5.20 | 9.50 |
| TeamC | TeamD | 1.59 | 4.20 | 6.30 |
| TeamE | TeamF | 3.00 | 5.50 | 1.70 |
| TeamB | TeamA | 1.50 | 4.50 | 8.70 |
| TeamD | TeamC | 1.25 | 4.20 | 8.00 |
| TeamF | TeamE | 1.40 | 5.00 | 7.20 |
+----------+----------+------+------+------+
这是此数据帧的输入:
structure(list(HomeTeam = c("TeamA", "TeamC", "TeamE", "TeamB",
"TeamD", "TeamF"), AwayTeam = c("TeamB", "TeamD", "TeamF", "TeamA",
"TeamC", "TeamE"), HWO = c(1.3, 1.59, 3, 1.5, 1.25, 1.4), DO = c(5.2,
4.2, 5.5, 4.5, 4.2, 5), AWO = c(9.5, 6.3, 1.7, 8.7, 8, 7.2)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
我需要的额外数据框是对每支球队的赔率进行平均的数据框。它必须考虑该球队是主场还是客场比赛,并为每场比赛使用适当的数字。
下面显示了最终的 table 应该是什么样子:
赔率总结:
关键:AvgWO(平均获胜赔率)、AvgDO(平均平局赔率)、AvgLO(平均失败赔率)
+-------+------+------+------+
| Team | AvgWO|AvgDO |AvgLO |
+-------+------+------+------+
| TeamA | 5.00 | 4.85 | 5.50 |
| TeamB | 5.50 | 4.85 | 5.00 |
| TeamC | 4.80 | 4.20 | 3.78 |
| TeamD | 3.78 | 4.20 | 4.80 |
| TeamE | 5.10 | 5.25 | 1.55 |
| TeamF | 1.55 | 5.25 | 5.10 |
+-------+------+------+------+
这是此数据帧的输入:
structure(list(Team = c("TeamA", "TeamB", "TeamC", "TeamD", "TeamE",
"TeamF"), AvgWO = c(5, 5.5, 4.8, 3.78, 5.1, 1.55), AvgDO = c(4.85,
4.85, 4.2, 4.2, 5.25, 5.25), AvgLO = c(5.5, 5, 7.55, 4.8, 2,
5.1)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
例如以TeamA为例…
将 A 队的获胜几率相加。如果他们在主场比赛,请添加 HWO 数据,如果他们在客场比赛,请添加 AWO 数据。然后除以他们参加的比赛总数。
- 例如。 (1.30 + 8.70) ÷ 2) = 5.00
将TeamA的平局赔率相加除以他们参加的比赛总数。
- 例如。 (5.20 + 4.50) ÷ 2 = 4.85
将TeamA的失败几率相加。如果他们在主场比赛,请添加 AWO 数字;如果他们在客场比赛,请添加 HWO 数字。然后除以他们参加的比赛总数。
- 例如。 (9.50 + 1.50) ÷ 2 = 5.50
如果有人对此有解决方案,我将不胜感激。请确保它是一个强大的解决方案,可以应对不同数量的游戏等等。
有趣的 question.Here 是解决方案,它为 TeamC 和 TeamE 的 avgLO 产生了不同的答案,但根据您的描述,我认为我下面的解决方案是正确的。所以请仔细检查并告诉我。
您可以改进命名等,但我希望这对您有所帮助。
DF <-
data.frame(
HomeTeam = paste0("Team", c("A", "C", "E", "B", "D", "F")),
AwayTeam = paste0("Team", c("B", "D", "F", "A", "C", "E")),
HWO = c(1.3, 1.59, 3, 1.5, 1.25, 1.4),
DO = c(5.2, 4.2, 5.5, 4.5, 4.2, 5),
AWO = c(9.5, 6.3, 1.7, 8.7, 8, 7.2)
)
library(magrittr)
library(dplyr)
library(reshape2)
DF %>%
melt(c("HWO", "DO", "AWO"), value.name = "Team") %>%
mutate(WO = ifelse(variable == "HomeTeam", HWO, AWO),
LO = ifelse(variable == "HomeTeam", AWO, HWO)) %>%
group_by(Team) %>%
summarise(avgWO = mean(WO),
avgDO = mean(DO),
avgLO = mean(LO))
结果(如果 tibble 不适合您,请转换为 data.frame)
# A tibble: 6 x 4
Team avgWO avgDO avgLO
<chr> <dbl> <dbl> <dbl>
1 TeamA 5 4.85 5.5
2 TeamB 5.5 4.85 5
3 TeamC 4.80 4.2 3.78
4 TeamD 3.78 4.2 4.80
5 TeamE 5.1 5.25 1.55
6 TeamF 1.55 5.25 5.1
我正在尝试在 R 中创建一个数据框,该数据框将总结基于另一个足球队的投注赔率。
例如,这个非常小的样本 table 包含主队和客队以及各自的赔率。
匹配数据:
关键:HWO(主场获胜赔率)、DO(平局赔率)、AWO(客场获胜赔率)
+----------+----------+------+------+------+
| HomeTeam | AwayTeam | HWO | DO | AWO |
+----------+----------+------+------+------+
| TeamA | TeamB | 1.30 | 5.20 | 9.50 |
| TeamC | TeamD | 1.59 | 4.20 | 6.30 |
| TeamE | TeamF | 3.00 | 5.50 | 1.70 |
| TeamB | TeamA | 1.50 | 4.50 | 8.70 |
| TeamD | TeamC | 1.25 | 4.20 | 8.00 |
| TeamF | TeamE | 1.40 | 5.00 | 7.20 |
+----------+----------+------+------+------+
这是此数据帧的输入:
structure(list(HomeTeam = c("TeamA", "TeamC", "TeamE", "TeamB",
"TeamD", "TeamF"), AwayTeam = c("TeamB", "TeamD", "TeamF", "TeamA",
"TeamC", "TeamE"), HWO = c(1.3, 1.59, 3, 1.5, 1.25, 1.4), DO = c(5.2,
4.2, 5.5, 4.5, 4.2, 5), AWO = c(9.5, 6.3, 1.7, 8.7, 8, 7.2)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
我需要的额外数据框是对每支球队的赔率进行平均的数据框。它必须考虑该球队是主场还是客场比赛,并为每场比赛使用适当的数字。
下面显示了最终的 table 应该是什么样子:
赔率总结:
关键:AvgWO(平均获胜赔率)、AvgDO(平均平局赔率)、AvgLO(平均失败赔率)
+-------+------+------+------+
| Team | AvgWO|AvgDO |AvgLO |
+-------+------+------+------+
| TeamA | 5.00 | 4.85 | 5.50 |
| TeamB | 5.50 | 4.85 | 5.00 |
| TeamC | 4.80 | 4.20 | 3.78 |
| TeamD | 3.78 | 4.20 | 4.80 |
| TeamE | 5.10 | 5.25 | 1.55 |
| TeamF | 1.55 | 5.25 | 5.10 |
+-------+------+------+------+
这是此数据帧的输入:
structure(list(Team = c("TeamA", "TeamB", "TeamC", "TeamD", "TeamE",
"TeamF"), AvgWO = c(5, 5.5, 4.8, 3.78, 5.1, 1.55), AvgDO = c(4.85,
4.85, 4.2, 4.2, 5.25, 5.25), AvgLO = c(5.5, 5, 7.55, 4.8, 2,
5.1)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
例如以TeamA为例…
将 A 队的获胜几率相加。如果他们在主场比赛,请添加 HWO 数据,如果他们在客场比赛,请添加 AWO 数据。然后除以他们参加的比赛总数。
- 例如。 (1.30 + 8.70) ÷ 2) = 5.00
将TeamA的平局赔率相加除以他们参加的比赛总数。
- 例如。 (5.20 + 4.50) ÷ 2 = 4.85
将TeamA的失败几率相加。如果他们在主场比赛,请添加 AWO 数字;如果他们在客场比赛,请添加 HWO 数字。然后除以他们参加的比赛总数。
- 例如。 (9.50 + 1.50) ÷ 2 = 5.50
如果有人对此有解决方案,我将不胜感激。请确保它是一个强大的解决方案,可以应对不同数量的游戏等等。
有趣的 question.Here 是解决方案,它为 TeamC 和 TeamE 的 avgLO 产生了不同的答案,但根据您的描述,我认为我下面的解决方案是正确的。所以请仔细检查并告诉我。
您可以改进命名等,但我希望这对您有所帮助。
DF <-
data.frame(
HomeTeam = paste0("Team", c("A", "C", "E", "B", "D", "F")),
AwayTeam = paste0("Team", c("B", "D", "F", "A", "C", "E")),
HWO = c(1.3, 1.59, 3, 1.5, 1.25, 1.4),
DO = c(5.2, 4.2, 5.5, 4.5, 4.2, 5),
AWO = c(9.5, 6.3, 1.7, 8.7, 8, 7.2)
)
library(magrittr)
library(dplyr)
library(reshape2)
DF %>%
melt(c("HWO", "DO", "AWO"), value.name = "Team") %>%
mutate(WO = ifelse(variable == "HomeTeam", HWO, AWO),
LO = ifelse(variable == "HomeTeam", AWO, HWO)) %>%
group_by(Team) %>%
summarise(avgWO = mean(WO),
avgDO = mean(DO),
avgLO = mean(LO))
结果(如果 tibble 不适合您,请转换为 data.frame)
# A tibble: 6 x 4
Team avgWO avgDO avgLO
<chr> <dbl> <dbl> <dbl>
1 TeamA 5 4.85 5.5
2 TeamB 5.5 4.85 5
3 TeamC 4.80 4.2 3.78
4 TeamD 3.78 4.2 4.80
5 TeamE 5.1 5.25 1.55
6 TeamF 1.55 5.25 5.1