Basic Calculations
# Addition
2+3
# Division
2/3
# Exponentiation
2^3
# Square root
sqrt(2)
# Logarithms
log(2)
Question 1: Compute the log base 5 of 10 and the log of 10
log10(5)
log(10)
Computing some offensive metrics in Baseball
#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
Batting_Average=round(BA,digits = 3)
Batting_Average
Question 2: What is the batting average of a player that bats 42 hits
in 212 at bats?
#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
On_Base_Percentage=round(OBP,digits = 3)
On_Base_Percentage
Often you will want to test whether something is less than, greater
than or equal to something.
#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
3 == 8# Does 3 equals 8?
3 != 8# Is 3 different from 8?
3 <= 8# Is 3 less than or equal to 8?
3>4
# Logical Disjunction (or)
FALSE | FALSE # False OR False
# Logical Conjunction (and)
TRUE & FALSE #True AND False
# Negation
! FALSE # Not False
# Combination of statements
2 < 3 | 1 == 5 # 2<3 is True, 1==5 is False, True OR False is True
Assigning Values to Variables
Total_Bases <- 6 + 5
Total_Bases*3
ls()
rm(Total_Bases)
Vector
pitches_by_innings <- c(12, 15, 10, 20, 10)
pitches_by_innings
strikes_by_innings <- c(9, 12, 6, 14, 9)
strikes_by_innings
#Question_4: Define two vectors,runs_per_9innings and hits_per_9innings, each with five elements.
runs_per_9inning<-c(2,5,7,11,13)
hits_per_9innings<-c(11,13,16,18,19)
runs_per_9inning
hits_per_9innings
# replicate function
rep(2, 5)
rep(1,4)
# consecutive numbers
1:5
2:10
# sequence from 1 to 20 with a step of 3
seq(1, 20, by=3)
# add vectors
pitches_by_innings+strikes_by_innings
# compare vectors
pitches_by_innings == strikes_by_innings
# find length of vector
length(pitches_by_innings)
# find average value in vector
mean(pitches_by_innings)
pitches_by_innings
# If you want to get the first element:
pitches_by_innings[1]
#Question_5: Get the first element of hits_per_9innings.
pitches_by_innings[length(pitches_by_innings)]
#Question_6: Get the last element of hits_per_9innings.
pitches_by_innings[c(2, 3, 4)]
player_positions <- c("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
How to Make a Random Sample
sample(1:10, size=5)
bar <- data.frame(var1 = LETTERS[1:10], var2 = 1:10)
# Check data frame
bar
n <- 5
samplerows <- sample(1:nrow(bar), size=n)
# print sample rows
samplerows
# extract rows
barsample <- bar[samplerows, ]
# print sample
print(barsample)
bar[sample(1:nrow(bar), n), ]
Using Tables
x <- c("Yes","No","No","Yes","Yes")
table(x)
Numerical measures of center and spread
sals <- c(12, .4, 5, 2, 50, 8, 3, 1, 4, 0.25)
# the average
mean(sals)
# the variance
var(sals)
# the standard deviation
sd(sals)
# the median
median(sals)
# Tukey's five number summary, usefull for boxplots
# five numbers: min, lower hinge, median, upper hinge, max
fivenum(sals)
# summary statistics
summary(sals)
How about the mode?
# Function to find the mode, i.e. most frequent value
getMode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
# Most frequent value in pitches_by_innings
getMode(pitches_by_innings)
#Question_7: Find the most frequent value of hits_per_9innings.
getMode(hits_per_9innings)
#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")
#Question_9: What is the most frequent answer recorded in the survey? Use the getMode function to compute results.
getMode(game_day)
LS0tCnRpdGxlOiAiQWN0aXZpdHkgNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCiMjIEJhc2ljIENhbGN1bGF0aW9ucwoKYGBge3J9CiMgQWRkaXRpb24KMiszCgojIERpdmlzaW9uCjIvMwoKIyBFeHBvbmVudGlhdGlvbgoyXjMgCgojIFNxdWFyZSByb290CnNxcnQoMikKCiMgTG9nYXJpdGhtcwpsb2coMikKYGBgCgpRdWVzdGlvbiAxOiBDb21wdXRlIHRoZSBsb2cgYmFzZSA1IG9mIDEwIGFuZCB0aGUgbG9nIG9mIDEwCgpgYGB7cn0KbG9nMTAoNSkKCmxvZygxMCkKYGBgCgojIyMjIENvbXB1dGluZyBzb21lIG9mZmVuc2l2ZSBtZXRyaWNzIGluIEJhc2ViYWxsCgpgYGB7cn0KI0JhdHRpbmcgQXZlcmFnZT0oTm8uIG9mIEhpdHMpLyhOby4gb2YgQXQgQmF0cykKI1doYXQgaXMgdGhlIGJhdHRpbmcgYXZlcmFnZSBvZiBhIHBsYXllciB0aGF0IGJhdHMgMjkgaGl0cyBpbiAxMTIgYXQgYmF0cz8KQkE9KDI5KS8oMTEyKQpCQQpgYGAKCmBgYHtyfQpCYXR0aW5nX0F2ZXJhZ2U9cm91bmQoQkEsZGlnaXRzID0gMykKQmF0dGluZ19BdmVyYWdlCmBgYAoKUXVlc3Rpb24gMjogV2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyA0MiBoaXRzIGluIDIxMiBhdCBiYXRzPwoKYGBge3J9CiNPbiBCYXNlIFBlcmNlbnRhZ2UKI09CUD0oSCtCQitIQlApLyhBdCBCYXRzK0JCK0hCUCtTRikKI0xldCB1cyBjb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzCiNBQj01MTUsSD0xNzIsQkI9ODQsSEJQPTUsU0Y9NgpPQlA9KDE3Mis4NCs1KS8oNTE1Kzg0KzUrNikKT0JQCmBgYAoKYGBge3J9Ck9uX0Jhc2VfUGVyY2VudGFnZT1yb3VuZChPQlAsZGlnaXRzID0gMykKT25fQmFzZV9QZXJjZW50YWdlCmBgYAoKT2Z0ZW4geW91IHdpbGwgd2FudCB0byB0ZXN0IHdoZXRoZXIgc29tZXRoaW5nIGlzIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNvbWV0aGluZy4KYGBge3J9CiNRdWVzdGlvbl8zOkNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RhdHM6CiNBQj01NjUsSD0xNTYsQkI9NjUsSEJQPTMsU0Y9NwojT0JQPShIK0JCK0hCUCkvKEFUIEJhdHMrQkI9SEJQK1NGKQpPQlAgPSAoMTU2KzY1KzMpLyg1NjUrNjUrMys3KQpPbl9CYXNlX1BlcmNlbnRhZ2U9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9uX0Jhc2VfUGVyY2VudGFnZQpgYGAKCgpgYGB7cn0KMyA9PSA4IyBEb2VzIDMgZXF1YWxzIDg/CjMgIT0gOCMgSXMgMyBkaWZmZXJlbnQgZnJvbSA4PwozIDw9IDgjIElzIDMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDg/CjM+NApgYGAKCmBgYHtyfQojIExvZ2ljYWwgRGlzanVuY3Rpb24gKG9yKQpGQUxTRSB8IEZBTFNFICMgRmFsc2UgT1IgRmFsc2UKIyBMb2dpY2FsIENvbmp1bmN0aW9uIChhbmQpClRSVUUgJiBGQUxTRSAjVHJ1ZSBBTkQgRmFsc2UKIyBOZWdhdGlvbgohIEZBTFNFICMgTm90IEZhbHNlCgpgYGAKCgpgYGB7cn0KIyBDb21iaW5hdGlvbiBvZiBzdGF0ZW1lbnRzCjIgPCAzIHwgMSA9PSA1ICMgMjwzIGlzIFRydWUsIDE9PTUgaXMgRmFsc2UsIFRydWUgT1IgRmFsc2UgaXMgVHJ1ZQpgYGAKCiMjIyBBc3NpZ25pbmcgVmFsdWVzIHRvIFZhcmlhYmxlcwoKYGBge3J9ClRvdGFsX0Jhc2VzIDwtIDYgKyA1ClRvdGFsX0Jhc2VzKjMKYGBgCgoKYGBge3J9CmxzKCkKYGBgCmBgYHtyfQpybShUb3RhbF9CYXNlcykKYGBgCgoKIyMjIFZlY3RvcgoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5ncyA8LSBjKDEyLCAxNSwgMTAsIDIwLCAxMCkgCnBpdGNoZXNfYnlfaW5uaW5ncwpgYGAKCmBgYHtyfQpzdHJpa2VzX2J5X2lubmluZ3MgPC0gYyg5LCAxMiwgNiwgMTQsIDkpCnN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCmBgYHtyfQojUXVlc3Rpb25fNDogRGVmaW5lIHR3byB2ZWN0b3JzLHJ1bnNfcGVyXzlpbm5pbmdzIGFuZCBoaXRzX3Blcl85aW5uaW5ncywgZWFjaCB3aXRoIGZpdmUgZWxlbWVudHMuIApydW5zX3Blcl85aW5uaW5nPC1jKDIsNSw3LDExLDEzKQpoaXRzX3Blcl85aW5uaW5nczwtYygxMSwxMywxNiwxOCwxOSkKcnVuc19wZXJfOWlubmluZwpoaXRzX3Blcl85aW5uaW5ncwpgYGAKCmBgYHtyfQojIHJlcGxpY2F0ZSBmdW5jdGlvbgpyZXAoMiwgNSkKCnJlcCgxLDQpCmBgYAoKYGBge3J9CiMgY29uc2VjdXRpdmUgbnVtYmVycwoxOjUKMjoxMApgYGAKCmBgYHtyfQojIHNlcXVlbmNlIGZyb20gMSB0byAyMCB3aXRoIGEgc3RlcCBvZiAzCnNlcSgxLCAyMCwgYnk9MykKYGBgCgpgYGB7cn0KIyBhZGQgdmVjdG9ycwpwaXRjaGVzX2J5X2lubmluZ3Mrc3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKYGBge3J9CiMgY29tcGFyZSB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncyA9PSBzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0KIyBmaW5kIGxlbmd0aCBvZiB2ZWN0b3IKbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgpgYGB7cn0KIyBmaW5kIGF2ZXJhZ2UgdmFsdWUgaW4gdmVjdG9yCm1lYW4ocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0KIyBJZiB5b3Ugd2FudCB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQ6CnBpdGNoZXNfYnlfaW5uaW5nc1sxXQpgYGAKCmBgYHtyfQojUXVlc3Rpb25fNTogR2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGhpdHNfcGVyXzlpbm5pbmdzLgpwaXRjaGVzX2J5X2lubmluZ3NbbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncyldCmBgYAoKYGBge3J9CiNRdWVzdGlvbl82OiBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBoaXRzX3Blcl85aW5uaW5ncy4KcGl0Y2hlc19ieV9pbm5pbmdzW2MoMiwgMywgNCldCmBgYAoKYGBge3J9CnBsYXllcl9wb3NpdGlvbnMgPC0gYygiY2F0Y2hlciIsICJwaXRjaGVyIiwgImluZmllbGRlcnMiLCAib3V0ZmllbGRlcnMiKQpgYGAKCiMjIyBEYXRhIEZyYW1lcwoKYGBge3J9CmRhdGEuZnJhbWUoYm9udXMgPSBjKDIsIDMsIDEpLCNpbiBtaWxsaW9ucyAKICAgICAgICAgICBhY3RpdmVfcm9zdGVyID0gYygieWVzIiwgIm5vIiwgInllcyIpLCAKICAgICAgICAgICBzYWxhcnkgPSBjKDEuNSwgMi41LCAxKSkjaW4gbWlsbGlvbnMgCmBgYAoKIyMjIEhvdyB0byBNYWtlIGEgUmFuZG9tIFNhbXBsZQoKYGBge3J9CnNhbXBsZSgxOjEwLCBzaXplPTUpCmBgYAoKYGBge3J9CmJhciA8LSBkYXRhLmZyYW1lKHZhcjEgPSBMRVRURVJTWzE6MTBdLCB2YXIyID0gMToxMCkKIyBDaGVjayBkYXRhIGZyYW1lCmJhcgpgYGAKCmBgYHtyfQpuIDwtIDUKYGBgCgpgYGB7cn0Kc2FtcGxlcm93cyA8LSBzYW1wbGUoMTpucm93KGJhciksIHNpemU9bikgCiMgcHJpbnQgc2FtcGxlIHJvd3MKc2FtcGxlcm93cwpgYGAKCgpgYGB7cn0KIyBleHRyYWN0IHJvd3MKYmFyc2FtcGxlIDwtIGJhcltzYW1wbGVyb3dzLCBdCiMgcHJpbnQgc2FtcGxlCnByaW50KGJhcnNhbXBsZSkKYGBgCgpgYGB7cn0KYmFyW3NhbXBsZSgxOm5yb3coYmFyKSwgbiksIF0KYGBgCgoKIyMjIFVzaW5nIFRhYmxlcwoKYGBge3J9CnggPC0gYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpIAp0YWJsZSh4KQpgYGAKCgojIyMgTnVtZXJpY2FsIG1lYXN1cmVzIG9mIGNlbnRlciBhbmQgc3ByZWFkCgpgYGB7cn0Kc2FscyA8LSBjKDEyLCAuNCwgNSwgMiwgNTAsIDgsIDMsIDEsIDQsIDAuMjUpCiMgdGhlIGF2ZXJhZ2UKbWVhbihzYWxzKSAKYGBgCgpgYGB7cn0KIyB0aGUgdmFyaWFuY2UKdmFyKHNhbHMpCmBgYAoKYGBge3J9CiMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgpzZChzYWxzKQpgYGAKCmBgYHtyfQojIHRoZSBtZWRpYW4KbWVkaWFuKHNhbHMpCmBgYAoKYGBge3J9CiMgVHVrZXkncyBmaXZlIG51bWJlciBzdW1tYXJ5LCB1c2VmdWxsIGZvciBib3hwbG90cwojIGZpdmUgbnVtYmVyczogbWluLCBsb3dlciBoaW5nZSwgbWVkaWFuLCB1cHBlciBoaW5nZSwgbWF4CmZpdmVudW0oc2FscykKYGBgCgpgYGB7cn0KIyBzdW1tYXJ5IHN0YXRpc3RpY3MKc3VtbWFyeShzYWxzKQpgYGAKCgojIyMgSG93IGFib3V0IHRoZSBtb2RlPwoKYGBge3J9CiMgRnVuY3Rpb24gdG8gZmluZCB0aGUgbW9kZSwgaS5lLiBtb3N0IGZyZXF1ZW50IHZhbHVlCmdldE1vZGUgPC0gZnVuY3Rpb24oeCkgewogICAgIHV4IDwtIHVuaXF1ZSh4KQogICAgIHV4W3doaWNoLm1heCh0YWJ1bGF0ZShtYXRjaCh4LCB1eCkpKV0KIH0KYGBgCgpgYGB7cn0KIyBNb3N0IGZyZXF1ZW50IHZhbHVlIGluIHBpdGNoZXNfYnlfaW5uaW5ncwpnZXRNb2RlKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgojUXVlc3Rpb25fNzogRmluZCB0aGUgbW9zdCBmcmVxdWVudCB2YWx1ZSBvZiBoaXRzX3Blcl85aW5uaW5ncy4KCmBgYHtyfQpnZXRNb2RlKGhpdHNfcGVyXzlpbm5pbmdzKQpgYGAKCmBgYHtyfQojUXVlc3Rpb25fODogU3VtbWFyaXplIHRoZSBmb2xsb3dpbmcgc3VydmV5IHdpdGggdGhlIGB0YWJsZSgpYCBjb21tYW5kOgojV2hhdCBpcyB5b3VyIGZhdm9yaXRlIGRheSBvZiB0aGUgd2VlayB0byB3YXRjaCBiYXNlYmFsbD8gQSB0b3RhbCBvZiAxMCBmYW5zIHN1Ym1pdHRlZCB0aGlzIHN1cnZleS4KI1NhdHVyZGF5LCBTYXR1cmRheSwgU3VuZGF5LCBNb25kYXksIFNhdHVyZGF5LFR1ZXNkYXksIFN1bmRheSwgRnJpZGF5LCBGcmlkYXksIE1vbmRheQpnYW1lX2RheTwtYygiU2F0dXJkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5IiwgIk1vbmRheSIsICJTYXR1cmRheSIsIlR1ZXNkYXkiLCAiU3VuZGF5IiwgIkZyaWRheSIsICJGcmlkYXkiLCAiTW9uZGF5IikKYGBgCgpgYGB7cn0KI1F1ZXN0aW9uXzk6IFdoYXQgaXMgdGhlIG1vc3QgZnJlcXVlbnQgYW5zd2VyIHJlY29yZGVkIGluIHRoZSBzdXJ2ZXk/IFVzZSB0aGUgZ2V0TW9kZSBmdW5jdGlvbiB0byBjb21wdXRlIHJlc3VsdHMuIApnZXRNb2RlKGdhbWVfZGF5KQpgYGAKCgoK