Suppose you are the General Manager of a baseball team, and you are
selecting two players for your team. You have a budget of $10,500,000,
and you have the choice between the following players: Player Name OBP
SLG Salary Yandy Diaz 0.403 0.511 $8,000,000 Joey Meneses 0.320 0.366
$723,600 Jose Abreu 0.292 0.358 $19,500,000 Ryan Noda 0.384 0.400
$720,000 Nate Lowe 0.365 0.426 $4,050,000
Given your budget and the player statistics, which two players would
you select?
# Load dataset and fit model to predict Runs Scored using regression model (RS)
baseball <- read.csv("baseball.csv")
model_RS <- lm(RS ~ OBP + SLG, data = baseball)
# Create player data
players <- data.frame(
Player = c("Yandy Diaz", "Joey Meneses", "Jose Abreu", "Ryan Noda", "Nate Lowe"),
OBP = c(0.403, 0.320, 0.292, 0.384, 0.365),
SLG = c(0.511, 0.366, 0.358, 0.400, 0.426),
Salary = c(8000000, 723600, 19500000, 720000, 4050000)
)
# Predict expected runs
players$PredictedRuns <- predict(model_RS, newdata = players)
# Evaluate all 2-player combinations under $10.5M
player_combos <- combn(1:nrow(players), 2, simplify = FALSE)
best_combo <- NULL
best_total_runs <- -Inf
for (combo in player_combos) {
total_salary <- sum(players$Salary[combo])
total_runs <- sum(players$PredictedRuns[combo])
if (total_salary <= 10500000 && total_runs > best_total_runs) {
best_combo <- combo
best_total_runs <- total_runs
}
}
# Print the best combination
best_players <- players[best_combo, ]
print("Best 2-player combination under $10.5M:")
[1] "Best 2-player combination under $10.5M:"
print(best_players[, c("Player", "OBP", "SLG", "Salary", "PredictedRuns")])
print(paste("Total Predicted Runs:", round(best_total_runs)))
[1] "Total Predicted Runs: 1987"
print(paste("Total Salary:", sum(best_players$Salary)))
[1] "Total Salary: 8720000"
LS0tCnRpdGxlOiAiSW4tY2xhc3MgYWN0aXZpdHkgIzk6IENob29zaW5nIGFtb25nIGRpZmZlcmVudCBwbGF5ZXJzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpTdXBwb3NlIHlvdSBhcmUgdGhlIEdlbmVyYWwgTWFuYWdlciBvZiBhIGJhc2ViYWxsIHRlYW0sIGFuZCB5b3UgYXJlIHNlbGVjdGluZyB0d28gcGxheWVycyBmb3IgeW91ciB0ZWFtLiBZb3UgaGF2ZSBhIGJ1ZGdldCBvZiAkMTAsNTAwLDAwMCwgYW5kIHlvdSBoYXZlIHRoZSBjaG9pY2UgYmV0d2VlbiB0aGUgZm9sbG93aW5nIHBsYXllcnM6ClBsYXllciBOYW1lCk9CUApTTEcKU2FsYXJ5CllhbmR5IERpYXoKMC40MDMKMC41MTEKJDgsMDAwLDAwMApKb2V5IE1lbmVzZXMKMC4zMjAKMC4zNjYKJDcyMyw2MDAKSm9zZSBBYnJldQowLjI5MgowLjM1OAokMTksNTAwLDAwMApSeWFuIE5vZGEKMC4zODQKMC40MDAKJDcyMCwwMDAKTmF0ZSBMb3dlCjAuMzY1CjAuNDI2CiQ0LDA1MCwwMDAKCgoKR2l2ZW4geW91ciBidWRnZXQgYW5kIHRoZSBwbGF5ZXIgc3RhdGlzdGljcywgd2hpY2ggdHdvIHBsYXllcnMgd291bGQgeW91IHNlbGVjdD8KYGBge3J9CiMgTG9hZCBkYXRhc2V0IGFuZCBmaXQgbW9kZWwgdG8gcHJlZGljdCBSdW5zIFNjb3JlZCB1c2luZyByZWdyZXNzaW9uIG1vZGVsIChSUykKYmFzZWJhbGwgPC0gcmVhZC5jc3YoImJhc2ViYWxsLmNzdiIpCm1vZGVsX1JTIDwtIGxtKFJTIH4gT0JQICsgU0xHLCBkYXRhID0gYmFzZWJhbGwpCgojIENyZWF0ZSBwbGF5ZXIgZGF0YQpwbGF5ZXJzIDwtIGRhdGEuZnJhbWUoCiAgUGxheWVyID0gYygiWWFuZHkgRGlheiIsICJKb2V5IE1lbmVzZXMiLCAiSm9zZSBBYnJldSIsICJSeWFuIE5vZGEiLCAiTmF0ZSBMb3dlIiksCiAgT0JQID0gYygwLjQwMywgMC4zMjAsIDAuMjkyLCAwLjM4NCwgMC4zNjUpLAogIFNMRyA9IGMoMC41MTEsIDAuMzY2LCAwLjM1OCwgMC40MDAsIDAuNDI2KSwKICBTYWxhcnkgPSBjKDgwMDAwMDAsIDcyMzYwMCwgMTk1MDAwMDAsIDcyMDAwMCwgNDA1MDAwMCkKKQoKIyBQcmVkaWN0IGV4cGVjdGVkIHJ1bnMKcGxheWVycyRQcmVkaWN0ZWRSdW5zIDwtIHByZWRpY3QobW9kZWxfUlMsIG5ld2RhdGEgPSBwbGF5ZXJzKQoKIyBFdmFsdWF0ZSBhbGwgMi1wbGF5ZXIgY29tYmluYXRpb25zIHVuZGVyICQxMC41TQpwbGF5ZXJfY29tYm9zIDwtIGNvbWJuKDE6bnJvdyhwbGF5ZXJzKSwgMiwgc2ltcGxpZnkgPSBGQUxTRSkKCmJlc3RfY29tYm8gPC0gTlVMTApiZXN0X3RvdGFsX3J1bnMgPC0gLUluZgoKZm9yIChjb21ibyBpbiBwbGF5ZXJfY29tYm9zKSB7CiAgdG90YWxfc2FsYXJ5IDwtIHN1bShwbGF5ZXJzJFNhbGFyeVtjb21ib10pCiAgdG90YWxfcnVucyA8LSBzdW0ocGxheWVycyRQcmVkaWN0ZWRSdW5zW2NvbWJvXSkKICBpZiAodG90YWxfc2FsYXJ5IDw9IDEwNTAwMDAwICYmIHRvdGFsX3J1bnMgPiBiZXN0X3RvdGFsX3J1bnMpIHsKICAgIGJlc3RfY29tYm8gPC0gY29tYm8KICAgIGJlc3RfdG90YWxfcnVucyA8LSB0b3RhbF9ydW5zCiAgfQp9CgojIFByaW50IHRoZSBiZXN0IGNvbWJpbmF0aW9uCmJlc3RfcGxheWVycyA8LSBwbGF5ZXJzW2Jlc3RfY29tYm8sIF0KcHJpbnQoIkJlc3QgMi1wbGF5ZXIgY29tYmluYXRpb24gdW5kZXIgJDEwLjVNOiIpCnByaW50KGJlc3RfcGxheWVyc1ssIGMoIlBsYXllciIsICJPQlAiLCAiU0xHIiwgIlNhbGFyeSIsICJQcmVkaWN0ZWRSdW5zIildKQpwcmludChwYXN0ZSgiVG90YWwgUHJlZGljdGVkIFJ1bnM6Iiwgcm91bmQoYmVzdF90b3RhbF9ydW5zKSkpCnByaW50KHBhc3RlKCJUb3RhbCBTYWxhcnk6Iiwgc3VtKGJlc3RfcGxheWVycyRTYWxhcnkpKSkKCmBgYAoK