# Addition
2+3
[1] 5
#Subtraction
2-5
[1] -3
# Exponentiation
5^3
[1] 125
# Logarithms
log(10)
[1] 2.302585
log(2.72,base = 2.72)
[1] 1
log10(10)
[1] 1
log10(100)
[1] 2
log(10, base =5)
[1] 1.430677
#Batting Average=(No. of Hits)/(No. of At Bats)
#What is the batting average of a player that bats 29 hits in 112 at bats?
BA=(29)/(112)
BA
[1] 0.2589286
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.259
# Question_1: Compute the log base 5 of 10 and the log of 10
log(10, base = 5) # log base 5 of 10
[1] 1.430677
log(10) # natural log of 10
[1] 2.302585
#Question_2:What is the batting average of a player that bats 42 hits in 212 at bats?
BA=(42)/(212)
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.198
#On Base Percentage
#OBP=(H+BB+HBP)/(At Bats+BB+HBP+SF)
#Let us compute the OBP for a player with the following general stats
#AB=515,H=172,BB=84,HBP=5,SF=6
OBP=(172+84+5)/(515+84+5+6)
OBP
[1] 0.4278689
On_Base_Percentage=round(OBP,digits = 3)
On_Base_Percentage
[1] 0.428
#Question_3:Compute the OBP for a player with the following general stats:
#AB=565,H=156,BB=65,HBP=3,SF=7
#OBP=(H+BB+HBP)/(At Bats+BB+HBP+SF)
OBP=(156+65+3)/(565+65+3+7)
On_Base_Percentage=round(OBP,digits = 3)
On_Base_Percentage
[1] 0.35
3 <= 8# Is 3 less than or equal to 8?
[1] TRUE
3>=5
[1] FALSE
3==5
[1] FALSE
!FALSE
[1] TRUE
!TRUE
[1] FALSE
# Combination of statements
2 < 3 | 1 == 5 # 2<3 is True, 1==5 is False, True OR False is True
[1] TRUE
2>3|2==3
[1] FALSE
2>1 & 3>=3
[1] TRUE
2>1 & 3>=4
[1] FALSE
Total_Bases <- 6 + 5
Total_Bases*3
[1] 33
ls()
[1] "BA" "bar" "barsample"
[4] "Batting_Average" "game_day" "getMode"
[7] "hits_per_9innings" "n" "OBP"
[10] "On_Base_Percentage" "pitches_by_innings" "player_positions"
[13] "runs_per_9innings" "sals" "samplerows"
[16] "strikes_by_innings" "Total_Bases" "x"
rm(Total_Bases)
ls()
[1] "BA" "bar" "barsample"
[4] "Batting_Average" "game_day" "getMode"
[7] "hits_per_9innings" "n" "OBP"
[10] "On_Base_Percentage" "pitches_by_innings" "player_positions"
[13] "runs_per_9innings" "sals" "samplerows"
[16] "strikes_by_innings" "x"
#Vectors
pitches_by_innings <- c(12, 15, 10, 20, 10)
pitches_by_innings
[1] 12 15 10 20 10
#Additional Vectors
#Many functions and operators like + or - will work on all elements of the vector.
# add vectors
pitches_by_innings+strikes_by_innings
[1] 21 27 16 34 19
# combined pitch activity per inning, can be analytically meaningful.
# find length of vector
length(pitches_by_innings)
[1] 5
# find minimum value in vector
min(pitches_by_innings)
[1] 10
# find average value in vector
mean(pitches_by_innings)
[1] 13.4
# I added essential functions for exploring.
strikes_by_innings <- c(9, 12, 6, 14, 9)
strikes_by_innings
[1] 9 12 6 14 9
#Question_4: Define two vectors,runs_per_9innings and hits_per_9innings, each with five elements.
runs_per_9innings<-c(2,5,7,11,13)
hits_per_9innings<-c(11,13,16,18,19)
runs_per_9innings
[1] 2 5 7 11 13
hits_per_9innings
[1] 11 13 16 18 19
rep(3,4)
[1] 3 3 3 3
2:4
[1] 2 3 4
# sequence from 1 to 10 with a step of 2
seq(1, 10, by=2)
[1] 1 3 5 7 9
# compare vectors
pitches_by_innings == strikes_by_innings
[1] FALSE FALSE FALSE FALSE FALSE
runs_per_9innings == hits_per_9innings
[1] FALSE FALSE FALSE FALSE FALSE
# If you want to get the first element:
pitches_by_innings[1]
[1] 12
hits_per_9innings[1]
[1] 11
hits_per_9innings[length(hits_per_9innings)]
[1] 19
pitches_by_innings[c(2, 3, 4)]
[1] 15 10 20
player_positions <- c("catcher", "pitcher", "infielders", "outfielders")
player_positions
[1] "catcher" "pitcher" "infielders" "outfielders"
#Data Frames
data.frame(bonus = c(2, 3, 1),#in millions
active_roster = c("yes", "no", "yes"),
salary = c(1.5, 2.5, 1))#in millions
#Random Sample
sample(1:10, size=5)
[1] 9 5 8 7 3
# Create a sample data frame
bar <- data.frame(var1 = LETTERS[1:10], var2 = 1:10)
bar
# Define sample size
n <- 5
# Step 1: Select random row numbers
samplerows <- sample(1:nrow(bar), size = n)
samplerows
[1] 1 7 9 6 5
# Step 2: Extract those rows from the data frame
barsample <- bar[samplerows, ]
print(barsample)
var1 var2
1 A 1
7 G 7
9 I 9
6 F 6
5 E 5
# Same thing in a single line of code
bar[sample(1:nrow(bar), n), ]
# I think it is important adding the full Random Sampling Workflow regardless of the size of the dataset. It can show as data analyst how to randomly select rows from the data frame and also to leard how to take a random sample for testing and exploratory.
#Using Tables
x <- c("Yes","No","No","Yes","Yes")
table(x)
x
No Yes
2 3
#Numerical measures of center and spread
sals <- c(12, .4, 5, 2, 50, 8, 3, 1, 4, 0.25)
# the average
mean(sals)
[1] 8.565
var(sals)
[1] 225.5145
sd(sals)
[1] 15.01714
median(sals)
[1] 3.5
# Tukey's five number summary, usefull for boxplots
# five numbers: min, lower hinge, median, upper hinge, max
fivenum(sals)
[1] 0.25 1.00 3.50 8.00 50.00
# summary statistics
summary(sals)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.250 1.250 3.500 8.565 7.250 50.000
#Mode
# Function to find the mode, i.e. most frequent value
getMode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
getMode(pitches_by_innings)
[1] 10
getMode(hits_per_9innings)
[1] 11
getMode(strikes_by_innings)
[1] 9
#Question_8: Summarize the following survey with the `table()` command:
#What is your favorite day of the week to watch baseball? A total of 10 fans submitted this survey.
#Saturday, Saturday, Sunday, Monday, Saturday,Tuesday, Sunday, Friday, Friday, Monday
game_day<-c("Saturday", "Saturday", "Sunday", "Monday", "Saturday","Tuesday", "Sunday", "Friday", "Friday", "Monday")
table(game_day)
game_day
Friday Monday Saturday Sunday Tuesday
2 2 3 2 1
#Question_9: What is the most frequent answer recorded in the survey? Use the getMode function to compute results.
getMode(game_day)
[1] "Saturday"
LS0tCnRpdGxlOiAiQWN0aXZpdHkgNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KIyBBZGRpdGlvbgoyKzMKI1N1YnRyYWN0aW9uCjItNQojIEV4cG9uZW50aWF0aW9uCjVeMyAKYGBgCgpgYGB7cn0KIyBMb2dhcml0aG1zCmxvZygxMCkKbG9nKDIuNzIsYmFzZSA9IDIuNzIpCmBgYAoKYGBge3J9CmxvZzEwKDEwKQpsb2cxMCgxMDApCmxvZygxMCwgYmFzZSA9NSkKYGBgCgoKYGBge3J9CiNCYXR0aW5nIEF2ZXJhZ2U9KE5vLiBvZiBIaXRzKS8oTm8uIG9mIEF0IEJhdHMpCiNXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDI5IGhpdHMgaW4gMTEyIGF0IGJhdHM/CkJBPSgyOSkvKDExMikKQkEKYGBgCgoKYGBge3J9CkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCQSxkaWdpdHMgPSAzKQpCYXR0aW5nX0F2ZXJhZ2UKYGBgCgoKCmBgYHtyfQojIFF1ZXN0aW9uXzE6IENvbXB1dGUgdGhlIGxvZyBiYXNlIDUgb2YgMTAgYW5kIHRoZSBsb2cgb2YgMTAKbG9nKDEwLCBiYXNlID0gNSkgICMgbG9nIGJhc2UgNSBvZiAxMApsb2coMTApICAgICAgICAgICAgIyBuYXR1cmFsIGxvZyBvZiAxMApgYGAKCgoKCmBgYHtyfQojUXVlc3Rpb25fMjpXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/CkJBPSg0MikvKDIxMikKQmF0dGluZ19BdmVyYWdlPXJvdW5kKEJBLGRpZ2l0cyA9IDMpCkJhdHRpbmdfQXZlcmFnZQpgYGAKCgoKCmBgYHtyfQojT24gQmFzZSBQZXJjZW50YWdlCiNPQlA9KEgrQkIrSEJQKS8oQXQgQmF0cytCQitIQlArU0YpCiNMZXQgdXMgY29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0cwojQUI9NTE1LEg9MTcyLEJCPTg0LEhCUD01LFNGPTYKT0JQPSgxNzIrODQrNSkvKDUxNSs4NCs1KzYpCk9CUApgYGAKCgoKCmBgYHtyfQpPbl9CYXNlX1BlcmNlbnRhZ2U9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9uX0Jhc2VfUGVyY2VudGFnZQpgYGAKCgoKCgpgYGB7cn0KI1F1ZXN0aW9uXzM6Q29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0czoKI0FCPTU2NSxIPTE1NixCQj02NSxIQlA9MyxTRj03CiNPQlA9KEgrQkIrSEJQKS8oQXQgQmF0cytCQitIQlArU0YpCk9CUD0oMTU2KzY1KzMpLyg1NjUrNjUrMys3KQpPbl9CYXNlX1BlcmNlbnRhZ2U9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9uX0Jhc2VfUGVyY2VudGFnZQpgYGAKCgoKYGBge3J9CjMgPD0gOCMgSXMgMyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOD8KMz49NQozPT01CiFGQUxTRQohVFJVRQpgYGAKCmBgYHtyfQojIENvbWJpbmF0aW9uIG9mIHN0YXRlbWVudHMKMiA8IDMgfCAxID09IDUgIyAyPDMgaXMgVHJ1ZSwgMT09NSBpcyBGYWxzZSwgVHJ1ZSBPUiBGYWxzZSBpcyBUcnVlCjI+M3wyPT0zCjI+MSAmIDM+PTMKMj4xICYgMz49NApgYGAKCmBgYHtyfQpUb3RhbF9CYXNlcyA8LSA2ICsgNQpUb3RhbF9CYXNlcyozCmBgYAoKCmBgYHtyfQpscygpCmBgYAoKCgpgYGB7cn0Kcm0oVG90YWxfQmFzZXMpCmBgYAoKCgpgYGB7cn0KbHMoKQpgYGAKCgpgYGB7cn0KI1ZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzIDwtIGMoMTIsIDE1LCAxMCwgMjAsIDEwKSAKcGl0Y2hlc19ieV9pbm5pbmdzCmBgYAoKCmBgYHtyfQojQWRkaXRpb25hbCBWZWN0b3JzCiNNYW55IGZ1bmN0aW9ucyBhbmQgb3BlcmF0b3JzIGxpa2UgKyBvciAtIHdpbGwgd29yayBvbiBhbGwgZWxlbWVudHMgb2YgdGhlIHZlY3Rvci4KCiMgYWRkIHZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncwoKIyBjb21iaW5lZCBwaXRjaCBhY3Rpdml0eSBwZXIgaW5uaW5nLCBjYW4gYmUgYW5hbHl0aWNhbGx5IG1lYW5pbmdmdWwuCmBgYAoKCgpgYGB7cn0KIyBmaW5kIGxlbmd0aCBvZiB2ZWN0b3IKbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncykKCiMgZmluZCBtaW5pbXVtIHZhbHVlIGluIHZlY3RvcgptaW4ocGl0Y2hlc19ieV9pbm5pbmdzKQoKIyBmaW5kIGF2ZXJhZ2UgdmFsdWUgaW4gdmVjdG9yCm1lYW4ocGl0Y2hlc19ieV9pbm5pbmdzKQoKIyBJIGFkZGVkIGVzc2VudGlhbCBmdW5jdGlvbnMgZm9yIGV4cGxvcmluZy4KYGBgCgoKCgoKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5ncyA8LSBjKDksIDEyLCA2LCAxNCwgOSkKc3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKYGBge3J9CiNRdWVzdGlvbl80OiBEZWZpbmUgdHdvIHZlY3RvcnMscnVuc19wZXJfOWlubmluZ3MgYW5kIGhpdHNfcGVyXzlpbm5pbmdzLCBlYWNoIHdpdGggZml2ZSBlbGVtZW50cy4gCnJ1bnNfcGVyXzlpbm5pbmdzPC1jKDIsNSw3LDExLDEzKSAKaGl0c19wZXJfOWlubmluZ3M8LWMoMTEsMTMsMTYsMTgsMTkpCnJ1bnNfcGVyXzlpbm5pbmdzCmhpdHNfcGVyXzlpbm5pbmdzCgpgYGAKCmBgYHtyfQpyZXAoMyw0KQpgYGAKCmBgYHtyfQoyOjQKYGBgCgpgYGB7cn0KIyBzZXF1ZW5jZSBmcm9tIDEgdG8gMTAgd2l0aCBhIHN0ZXAgb2YgMgpzZXEoMSwgMTAsIGJ5PTIpCmBgYAoKYGBge3J9CiMgY29tcGFyZSB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncyA9PSBzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0KcnVuc19wZXJfOWlubmluZ3MgPT0gaGl0c19wZXJfOWlubmluZ3MKYGBgCgpgYGB7cn0KIyBJZiB5b3Ugd2FudCB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQ6CnBpdGNoZXNfYnlfaW5uaW5nc1sxXQpgYGAKCgpgYGB7cn0KaGl0c19wZXJfOWlubmluZ3NbMV0KYGBgCgpgYGB7cn0KaGl0c19wZXJfOWlubmluZ3NbbGVuZ3RoKGhpdHNfcGVyXzlpbm5pbmdzKV0KYGBgCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzW2MoMiwgMywgNCldCmBgYAoKCmBgYHtyfQpwbGF5ZXJfcG9zaXRpb25zIDwtIGMoImNhdGNoZXIiLCAicGl0Y2hlciIsICJpbmZpZWxkZXJzIiwgIm91dGZpZWxkZXJzIikKcGxheWVyX3Bvc2l0aW9ucwpgYGAKYGBge3J9CiNEYXRhIEZyYW1lcwpkYXRhLmZyYW1lKGJvbnVzID0gYygyLCAzLCAxKSwjaW4gbWlsbGlvbnMgCiAgICAgICAgICAgYWN0aXZlX3Jvc3RlciA9IGMoInllcyIsICJubyIsICJ5ZXMiKSwgCiAgICAgICAgICAgc2FsYXJ5ID0gYygxLjUsIDIuNSwgMSkpI2luIG1pbGxpb25zCmBgYAoKCmBgYHtyfQojUmFuZG9tIFNhbXBsZQoKc2FtcGxlKDE6MTAsIHNpemU9NSkKYGBgCgoKCgpgYGB7cn0KIyBDcmVhdGUgYSBzYW1wbGUgZGF0YSBmcmFtZQpiYXIgPC0gZGF0YS5mcmFtZSh2YXIxID0gTEVUVEVSU1sxOjEwXSwgdmFyMiA9IDE6MTApCmJhcgoKIyBEZWZpbmUgc2FtcGxlIHNpemUKbiA8LSA1CgojIFN0ZXAgMTogU2VsZWN0IHJhbmRvbSByb3cgbnVtYmVycwpzYW1wbGVyb3dzIDwtIHNhbXBsZSgxOm5yb3coYmFyKSwgc2l6ZSA9IG4pCnNhbXBsZXJvd3MKCiMgU3RlcCAyOiBFeHRyYWN0IHRob3NlIHJvd3MgZnJvbSB0aGUgZGF0YSBmcmFtZQpiYXJzYW1wbGUgPC0gYmFyW3NhbXBsZXJvd3MsIF0KcHJpbnQoYmFyc2FtcGxlKQoKIyBTYW1lIHRoaW5nIGluIGEgc2luZ2xlIGxpbmUgb2YgY29kZQpiYXJbc2FtcGxlKDE6bnJvdyhiYXIpLCBuKSwgXQoKIyBJIHRoaW5rIGl0IGlzIGltcG9ydGFudCBhZGRpbmcgdGhlIGZ1bGwgUmFuZG9tIFNhbXBsaW5nIFdvcmtmbG93IHJlZ2FyZGxlc3Mgb2YgdGhlIHNpemUgb2YgdGhlIGRhdGFzZXQuIEl0IGNhbiBzaG93IGFzIGRhdGEgYW5hbHlzdCBob3cgdG8gcmFuZG9tbHkgc2VsZWN0IHJvd3MgZnJvbSB0aGUgZGF0YSBmcmFtZSBhbmQgYWxzbyB0byBsZWFyZCBob3cgdG8gdGFrZSBhIHJhbmRvbSBzYW1wbGUgZm9yIHRlc3RpbmcgYW5kIGV4cGxvcmF0b3J5LgoKYGBgCgoKYGBge3J9CiNVc2luZyBUYWJsZXMKCnggPC0gYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpIAp0YWJsZSh4KQpgYGAKCgoKYGBge3J9CiNOdW1lcmljYWwgbWVhc3VyZXMgb2YgY2VudGVyIGFuZCBzcHJlYWQKc2FscyA8LSBjKDEyLCAuNCwgNSwgMiwgNTAsIDgsIDMsIDEsIDQsIDAuMjUpCiMgdGhlIGF2ZXJhZ2UKbWVhbihzYWxzKSAKdmFyKHNhbHMpCnNkKHNhbHMpCm1lZGlhbihzYWxzKQpgYGAKCgoKCmBgYHtyfQojIFR1a2V5J3MgZml2ZSBudW1iZXIgc3VtbWFyeSwgdXNlZnVsbCBmb3IgYm94cGxvdHMKIyBmaXZlIG51bWJlcnM6IG1pbiwgbG93ZXIgaGluZ2UsIG1lZGlhbiwgdXBwZXIgaGluZ2UsIG1heApmaXZlbnVtKHNhbHMpCmBgYAoKCmBgYHtyfQojIHN1bW1hcnkgc3RhdGlzdGljcwpzdW1tYXJ5KHNhbHMpCmBgYAoKCmBgYHtyfQojTW9kZQojIEZ1bmN0aW9uIHRvIGZpbmQgdGhlIG1vZGUsIGkuZS4gbW9zdCBmcmVxdWVudCB2YWx1ZQpnZXRNb2RlIDwtIGZ1bmN0aW9uKHgpIHsKICAgICB1eCA8LSB1bmlxdWUoeCkKICAgICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCwgdXgpKSldCiB9CmBgYAoKCgpgYGB7cn0KZ2V0TW9kZShwaXRjaGVzX2J5X2lubmluZ3MpCmdldE1vZGUoaGl0c19wZXJfOWlubmluZ3MpCmdldE1vZGUoc3RyaWtlc19ieV9pbm5pbmdzKQpgYGAKCgoKYGBge3J9CiNRdWVzdGlvbl84OiBTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBzdXJ2ZXkgd2l0aCB0aGUgYHRhYmxlKClgIGNvbW1hbmQ6CiNXaGF0IGlzIHlvdXIgZmF2b3JpdGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHdhdGNoIGJhc2ViYWxsPyBBIHRvdGFsIG9mIDEwIGZhbnMgc3VibWl0dGVkIHRoaXMgc3VydmV5LgojU2F0dXJkYXksIFNhdHVyZGF5LCBTdW5kYXksIE1vbmRheSwgU2F0dXJkYXksVHVlc2RheSwgU3VuZGF5LCBGcmlkYXksIEZyaWRheSwgTW9uZGF5CmdhbWVfZGF5PC1jKCJTYXR1cmRheSIsICJTYXR1cmRheSIsICJTdW5kYXkiLCAiTW9uZGF5IiwgIlNhdHVyZGF5IiwiVHVlc2RheSIsICJTdW5kYXkiLCAiRnJpZGF5IiwgIkZyaWRheSIsICJNb25kYXkiKQp0YWJsZShnYW1lX2RheSkKYGBgCgoKYGBge3J9CiNRdWVzdGlvbl85OiBXaGF0IGlzIHRoZSBtb3N0IGZyZXF1ZW50IGFuc3dlciByZWNvcmRlZCBpbiB0aGUgc3VydmV5PyBVc2UgdGhlIGdldE1vZGUgZnVuY3Rpb24gdG8gY29tcHV0ZSByZXN1bHRzLiAKCmdldE1vZGUoZ2FtZV9kYXkpCmBgYAoK