Question 5:
Consider the following vectors representing the number of field goals
made and attempted by a basketball player in five games:
Field Goals Made: c(18, 7, 6, 9, 10,13) Field Goals Attempted: c(36,
23, 12, 18, 24,22)
Calculate the field goal percentage for each game and select the
correct average field goal percentage for the five games.
Answer :
# Field goals made and attempted
fg_made <- c(18, 7, 6, 9, 10, 13)
fg_attempted <- c(36, 23, 12, 18, 24, 22)
# Field goal percentage for each game, rounded to 2 decimals
fg_pct <- round((fg_made / fg_attempted) * 100, 2)
# Labeling per game
names(fg_pct) <- paste("Game", 1:length(fg_pct))
# Per-game percentages
print(fg_pct)
Game 1 Game 2 Game 3 Game 4 Game 5 Game 6
50.00 30.43 50.00 50.00 41.67 59.09
# Average field goal percentage, rounded to 2 decimals
avg_fg_pct <- round(mean(fg_pct), 2)
cat("Average:", avg_fg_pct, "\n")
Average: 46.87
Question 6:
Consider the following vectors in R representing the number of
three-pointers made (3PM) and attempted (3PA) by a basketball player
over a seven-game span:
Three-Pointers Made: c(3, 5, 10, 6, 3, 7, 1)
Three-Pointers Attempted: c(9, 10, 18, 12, 11, 12, 11)
Calculate both the average of the individual per-game three-point
percentages and the overall (cumulative) three-point shooting percentage
across all seven games. Submit your code and knitted R HTML file or
RPubs link as instructed.
Answer :
# Three-pointers made and attempted over seven games
three_made <- c(3, 5, 10, 6, 3, 7, 1)
three_attempted <- c(9, 10, 18, 12, 11, 12, 11)
# Per-game three-point percentages
per_game_pct <- (three_made / three_attempted) * 100
# 1. Average of the individual per-game percentages
avg_per_game_pct <- mean(per_game_pct)
# 2. Overall (cumulative) three-point percentage
overall_pct <- (sum(three_made) / sum(three_attempted)) * 100
# Labeling per game
names(per_game_pct) <- paste("Game", 1:length(per_game_pct))
# Results, rounded to 2 decimals
round(per_game_pct, 2)
Game 1 Game 2 Game 3 Game 4 Game 5 Game 6 Game 7
33.33 50.00 55.56 50.00 27.27 58.33 9.09
print("Average of per-game:")
[1] "Average of per-game:"
round(avg_per_game_pct, 2)
[1] 40.51
print("Overall (cumulative):")
[1] "Overall (cumulative):"
round(overall_pct, 2)
[1] 42.17
Question 7:
Consider the following dataset representing the performance of
baseball players in a season. It includes the following variables:
PlayerID, Hits, At-Bats, Home Runs (HR), Walks (BB), and Strikeouts
(SO).
PlayerID Hits At-Bats HR BB SO
1 112 400 25 50 60
2 124 450 22 60 65
3 121 380 8 19 67
4 106 500 20 150 92
5 140 402 11 55 70
Compute the On-Base Percentage (OBP) for each player and select the
player with the highest OBP. Submit your code and knitted R HTML file or
RPubs link as instructed.
(Formula: OBP = (Hits + Walks) / (At-Bats + Walks))
Answer :
# Player data
PlayerID <- c(1, 2, 3, 4, 5)
Hits <- c(112, 124, 121, 106, 140)
AtBats <- c(400, 450, 380, 500, 402)
BB <- c(50, 60, 19, 150, 55)
# On-Base Percentage: OBP = (Hits + Walks) / (At-Bats + Walks)
OBP <- (Hits + BB) / (AtBats + BB)
# OBP for each player, rounded to 3 decimals
print("OBP by player:")
[1] "OBP by player:"
print(round(OBP, 3))
[1] 0.360 0.361 0.351 0.394 0.427
# Player with the highest OBP
best <- PlayerID[which.max(OBP)]
print("Player with highest OBP:")
[1] "Player with highest OBP:"
print(best)
[1] 5
print("Highest OBP value:")
[1] "Highest OBP value:"
print(round(max(OBP), 3))
[1] 0.427
LS0tCnRpdGxlOiAiRmluYWwgRXhhbSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKUXVlc3Rpb24gNTogCgpDb25zaWRlciB0aGUgZm9sbG93aW5nIHZlY3RvcnMgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgZmllbGQgZ29hbHMgbWFkZSBhbmQgYXR0ZW1wdGVkIGJ5IGEgYmFza2V0YmFsbCBwbGF5ZXIgaW4gZml2ZSBnYW1lczoKCkZpZWxkIEdvYWxzIE1hZGU6IGMoMTgsIDcsIDYsIDksIDEwLDEzKSBGaWVsZCBHb2FscyBBdHRlbXB0ZWQ6IGMoMzYsIDIzLCAxMiwgMTgsIDI0LDIyKQoKQ2FsY3VsYXRlIHRoZSBmaWVsZCBnb2FsIHBlcmNlbnRhZ2UgZm9yIGVhY2ggZ2FtZSBhbmQgc2VsZWN0IHRoZSBjb3JyZWN0IGF2ZXJhZ2UgZmllbGQgZ29hbCBwZXJjZW50YWdlIGZvciB0aGUgZml2ZSBnYW1lcy4KCgpBbnN3ZXIgOgpgYGB7cn0KIyBGaWVsZCBnb2FscyBtYWRlIGFuZCBhdHRlbXB0ZWQKZmdfbWFkZSAgICAgIDwtIGMoMTgsIDcsIDYsIDksIDEwLCAxMykKZmdfYXR0ZW1wdGVkIDwtIGMoMzYsIDIzLCAxMiwgMTgsIDI0LCAyMikKCiMgRmllbGQgZ29hbCBwZXJjZW50YWdlIGZvciBlYWNoIGdhbWUsIHJvdW5kZWQgdG8gMiBkZWNpbWFscwpmZ19wY3QgPC0gcm91bmQoKGZnX21hZGUgLyBmZ19hdHRlbXB0ZWQpICogMTAwLCAyKQoKIyBMYWJlbGluZyBwZXIgZ2FtZQpuYW1lcyhmZ19wY3QpIDwtIHBhc3RlKCJHYW1lIiwgMTpsZW5ndGgoZmdfcGN0KSkKCiMgUGVyLWdhbWUgcGVyY2VudGFnZXMKcHJpbnQoZmdfcGN0KQoKIyBBdmVyYWdlIGZpZWxkIGdvYWwgcGVyY2VudGFnZSwgcm91bmRlZCB0byAyIGRlY2ltYWxzCmF2Z19mZ19wY3QgPC0gcm91bmQobWVhbihmZ19wY3QpLCAyKQpjYXQoIkF2ZXJhZ2U6IiwgYXZnX2ZnX3BjdCwgIlxuIikKYGBgCgpRdWVzdGlvbiA2OgoKQ29uc2lkZXIgdGhlIGZvbGxvd2luZyB2ZWN0b3JzIGluIFIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgdGhyZWUtcG9pbnRlcnMgbWFkZSAoM1BNKSBhbmQgYXR0ZW1wdGVkICgzUEEpIGJ5IGEgYmFza2V0YmFsbCBwbGF5ZXIgb3ZlciBhIHNldmVuLWdhbWUgc3BhbjoKClRocmVlLVBvaW50ZXJzIE1hZGU6IGMoMywgNSwgMTAsIDYsIDMsIDcsIDEpCgpUaHJlZS1Qb2ludGVycyBBdHRlbXB0ZWQ6IGMoOSwgMTAsIDE4LCAxMiwgMTEsIDEyLCAxMSkKCkNhbGN1bGF0ZSBib3RoIHRoZSBhdmVyYWdlIG9mIHRoZSBpbmRpdmlkdWFsIHBlci1nYW1lIHRocmVlLXBvaW50IHBlcmNlbnRhZ2VzIGFuZCB0aGUgb3ZlcmFsbCAoY3VtdWxhdGl2ZSkgdGhyZWUtcG9pbnQgc2hvb3RpbmcgcGVyY2VudGFnZSBhY3Jvc3MgYWxsIHNldmVuIGdhbWVzLiBTdWJtaXQgeW91ciBjb2RlIGFuZCBrbml0dGVkIFIgSFRNTCBmaWxlIG9yIFJQdWJzIGxpbmsgYXMgaW5zdHJ1Y3RlZC4KCgpBbnN3ZXIgOgpgYGB7cn0KIyBUaHJlZS1wb2ludGVycyBtYWRlIGFuZCBhdHRlbXB0ZWQgb3ZlciBzZXZlbiBnYW1lcwp0aHJlZV9tYWRlICAgICAgPC0gYygzLCA1LCAxMCwgNiwgMywgNywgMSkKdGhyZWVfYXR0ZW1wdGVkIDwtIGMoOSwgMTAsIDE4LCAxMiwgMTEsIDEyLCAxMSkKCiMgUGVyLWdhbWUgdGhyZWUtcG9pbnQgcGVyY2VudGFnZXMKcGVyX2dhbWVfcGN0IDwtICh0aHJlZV9tYWRlIC8gdGhyZWVfYXR0ZW1wdGVkKSAqIDEwMAoKIyAxLiBBdmVyYWdlIG9mIHRoZSBpbmRpdmlkdWFsIHBlci1nYW1lIHBlcmNlbnRhZ2VzCmF2Z19wZXJfZ2FtZV9wY3QgPC0gbWVhbihwZXJfZ2FtZV9wY3QpCgojIDIuIE92ZXJhbGwgKGN1bXVsYXRpdmUpIHRocmVlLXBvaW50IHBlcmNlbnRhZ2UKb3ZlcmFsbF9wY3QgPC0gKHN1bSh0aHJlZV9tYWRlKSAvIHN1bSh0aHJlZV9hdHRlbXB0ZWQpKSAqIDEwMAoKIyBMYWJlbGluZyBwZXIgZ2FtZQpuYW1lcyhwZXJfZ2FtZV9wY3QpIDwtIHBhc3RlKCJHYW1lIiwgMTpsZW5ndGgocGVyX2dhbWVfcGN0KSkKCiMgUmVzdWx0cywgcm91bmRlZCB0byAyIGRlY2ltYWxzCnJvdW5kKHBlcl9nYW1lX3BjdCwgMikKcHJpbnQoIkF2ZXJhZ2Ugb2YgcGVyLWdhbWU6IikKcm91bmQoYXZnX3Blcl9nYW1lX3BjdCwgMikKcHJpbnQoIk92ZXJhbGwgKGN1bXVsYXRpdmUpOiIpCnJvdW5kKG92ZXJhbGxfcGN0LCAyKQpgYGAKClF1ZXN0aW9uIDc6CgpDb25zaWRlciB0aGUgZm9sbG93aW5nIGRhdGFzZXQgcmVwcmVzZW50aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBiYXNlYmFsbCBwbGF5ZXJzIGluIGEgc2Vhc29uLiBJdCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczogUGxheWVySUQsIEhpdHMsIEF0LUJhdHMsIEhvbWUgUnVucyAoSFIpLCBXYWxrcyAoQkIpLCBhbmQgU3RyaWtlb3V0cyAoU08pLgoKUGxheWVySUQgICAgIEhpdHMgICAgQXQtQmF0cyAgICAgICAgSFIgICAgICAgIEJCICAgICBTTwoKICAgIDEgICAgICAgICAgICAgMTEyICAgICAgIDQwMCAgICAgICAgICAgMjUgICAgICAgICAgNTAgICAgIDYwCgogICAgMiAgICAgICAgICAgICAxMjQgICAgICAgNDUwICAgICAgICAgICAyMiAgICAgICAgICA2MCAgICAgNjUKCiAgICAzICAgICAgICAgICAgIDEyMSAgICAgICAzODAgICAgICAgICAgIDggICAgICAgICAgICAxOSAgICAgNjcKCiAgICA0ICAgICAgICAgICAgIDEwNiAgICAgICA1MDAgICAgICAgICAgIDIwICAgICAgICAgMTUwICAgICA5MgoKICAgIDUgICAgICAgICAgICAgMTQwICAgICAgIDQwMiAgICAgICAgICAgMTEgICAgICAgICAgNTUgICAgIDcwCgpDb21wdXRlIHRoZSBPbi1CYXNlIFBlcmNlbnRhZ2UgKE9CUCkgZm9yIGVhY2ggcGxheWVyIGFuZCBzZWxlY3QgdGhlIHBsYXllciB3aXRoIHRoZSBoaWdoZXN0IE9CUC4gU3VibWl0IHlvdXIgY29kZSBhbmQga25pdHRlZCBSIEhUTUwgZmlsZSBvciBSUHVicyBsaW5rIGFzIGluc3RydWN0ZWQuCgooRm9ybXVsYTogT0JQID0gKEhpdHMgKyBXYWxrcykgLyAoQXQtQmF0cyArIFdhbGtzKSkKCgpBbnN3ZXIgOgpgYGB7cn0KIyBQbGF5ZXIgZGF0YQpQbGF5ZXJJRCA8LSBjKDEsIDIsIDMsIDQsIDUpCkhpdHMgICAgIDwtIGMoMTEyLCAxMjQsIDEyMSwgMTA2LCAxNDApCkF0QmF0cyAgIDwtIGMoNDAwLCA0NTAsIDM4MCwgNTAwLCA0MDIpCkJCICAgICAgIDwtIGMoNTAsIDYwLCAxOSwgMTUwLCA1NSkKCiMgT24tQmFzZSBQZXJjZW50YWdlOiBPQlAgPSAoSGl0cyArIFdhbGtzKSAvIChBdC1CYXRzICsgV2Fsa3MpCk9CUCA8LSAoSGl0cyArIEJCKSAvIChBdEJhdHMgKyBCQikKCiMgT0JQIGZvciBlYWNoIHBsYXllciwgcm91bmRlZCB0byAzIGRlY2ltYWxzCnByaW50KCJPQlAgYnkgcGxheWVyOiIpCnByaW50KHJvdW5kKE9CUCwgMykpCgojIFBsYXllciB3aXRoIHRoZSBoaWdoZXN0IE9CUApiZXN0IDwtIFBsYXllcklEW3doaWNoLm1heChPQlApXQpwcmludCgiUGxheWVyIHdpdGggaGlnaGVzdCBPQlA6IikKcHJpbnQoYmVzdCkKcHJpbnQoIkhpZ2hlc3QgT0JQIHZhbHVlOiIpCnByaW50KHJvdW5kKG1heChPQlApLCAzKSkKYGBg