This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

Addition

2-3
[1] -1

Division

2/3
[1] 0.6666667

Exponentiation

2^3 
[1] 8

Square root

sqrt(2)
[1] 1.414214

Logarithms

log(2)
[1] 0.6931472

Question_1: Compute the log base 5 of 10 and the log of 10.

log(10, base = 5)
[1] 1.430677
log(10)
[1] 2.302585

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
[1] 0.2589286
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.259

Question_2:What is the batting average of a player that bats 42 hits in 212 at bats?

hits <- 42
at_bats <- 212

Batting_Average = hits/at_bats
Batting_Average
[1] 0.1981132
#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

AB <- 565  # At-bats
H <- 156   # Hits
BB <- 65   # Walks (Bases on Balls)
HBP <- 3   # Hit by Pitch
SF <- 7    # Sacrifice Flies

OBP <- (H + BB + HBP) / (AB + BB + HBP + SF)

OBP
[1] 0.35
3 == 8# Does 3 equals 8?
[1] FALSE
3 != 8# Is 3 different from 8?
[1] TRUE
3 <= 8# Is 3 less than or equal to 8?
[1] TRUE
3>4
[1] FALSE
# Logical Disjunction (or)
FALSE | FALSE # False OR False
[1] FALSE
# Logical Conjunction (and)
TRUE & FALSE #True AND False
[1] FALSE
# Negation
! FALSE # Not False
[1] TRUE
# Combination of statements
2 < 3 | 1 == 5 # 2<3 is True, 1==5 is False, True OR False is True
[1] TRUE

Assigning Values to Variables

Total_Bases <- 6 + 5
Total_Bases*3
[1] 33
ls()
 [1] "AB"                 "at_bats"            "BA"                 "Batting_Average"   
 [5] "BB"                 "H"                  "HBP"                "hits"              
 [9] "OBP"                "On_Base_Percentage" "SF"                 "Total_Bases"       
rm(Total_Bases)
Warning in rm(Total_Bases) : object 'Total_Bases' not found

Vectors

pitches_by_innings <- c(12, 15, 10, 20, 10) 
pitches_by_innings
[1] 12 15 10 20 10
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(4.5, 3.8, 5.2, 4.1, 3.9)
hits_per_9innings <- c(8.7, 7.9, 9.2, 8.3, 7.8)

runs_per_9innings
[1] 4.5 3.8 5.2 4.1 3.9
hits_per_9innings
[1] 8.7 7.9 9.2 8.3 7.8
# replicate function
rep(2, 5)
[1] 2 2 2 2 2
rep(1,4)
[1] 1 1 1 1
# consecutive numbers
1:5
[1] 1 2 3 4 5
2:10
[1]  2  3  4  5  6  7  8  9 10
seq(1, 10, by=2)
[1] 1 3 5 7 9
seq(2,13,by=3)
[1]  2  5  8 11
# add vectors
pitches_by_innings+strikes_by_innings
[1] 21 27 16 34 19
# compare vectors
pitches_by_innings == strikes_by_innings
[1] FALSE FALSE FALSE FALSE FALSE
# 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
pitches_by_innings
[1] 12 15 10 20 10
# If you want to get the first element:
pitches_by_innings[1]
[1] 12

Question_5: Get the first element of hits_per_9innings.

hits_per_9innings[1]
[1] 8.7
pitches_by_innings[length(pitches_by_innings)]
[1] 10

Question_6: Get the last element of hits_per_9innings.

hits_per_9innings[5]
[1] 7.8
pitches_by_innings[c(2, 3, 4)]
[1] 15 10 20

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)
[1] 8 1 7 2 9
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
[1]  8  2  7 10  5
# 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)
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
# the variance
var(sals)
[1] 225.5145
# the standard deviation
sd(sals)
[1] 15.01714
# the median
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 

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)
[1] 10

Question_7: Find the most frequent value of hits_per_9innings.

getMode(hits_per_9innings)
[1] 8.7

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")
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"
LS0tCnRpdGxlOiAiRmlyc3QgU3RlcHMgd2l0aCBSIGFjdGl2aXR5IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiAKClRyeSBleGVjdXRpbmcgdGhpcyBjaHVuayBieSBjbGlja2luZyB0aGUgKlJ1biogYnV0dG9uIHdpdGhpbiB0aGUgY2h1bmsgb3IgYnkgcGxhY2luZyB5b3VyIGN1cnNvciBpbnNpZGUgaXQgYW5kIHByZXNzaW5nICpDdHJsK1NoaWZ0K0VudGVyKi4gCgoKCkFkZGl0aW9uCmBgYHtyfQoyLTMKYGBgCgpEaXZpc2lvbgpgYGB7cn0KMi8zCmBgYAoKRXhwb25lbnRpYXRpb24KYGBge3J9CjJeMyAKYGBgCgpTcXVhcmUgcm9vdApgYGB7cn0Kc3FydCgyKQpgYGAKCkxvZ2FyaXRobXMKYGBge3J9CmxvZygyKQpgYGAKClF1ZXN0aW9uXzE6IENvbXB1dGUgdGhlIGxvZyBiYXNlIDUgb2YgMTAgYW5kIHRoZSBsb2cgb2YgMTAuCmBgYHtyfQpsb2coMTAsIGJhc2UgPSA1KQpsb2coMTApCmBgYApDb21wdXRpbmcgc29tZSBvZmZlbnNpdmUgbWV0cmljcyBpbiBCYXNlYmFsbApgYGB7cn0KI0JhdHRpbmcgQXZlcmFnZT0oTm8uIG9mIEhpdHMpLyhOby4gb2YgQXQgQmF0cykKI1doYXQgaXMgdGhlIGJhdHRpbmcgYXZlcmFnZSBvZiBhIHBsYXllciB0aGF0IGJhdHMgMjkgaGl0cyBpbiAxMTIgYXQgYmF0cz8KQkE9KDI5KS8oMTEyKQpCQQpgYGAKYGBge3J9CkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCQSxkaWdpdHMgPSAzKQpCYXR0aW5nX0F2ZXJhZ2UKYGBgClF1ZXN0aW9uXzI6V2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyA0MiBoaXRzIGluIDIxMiBhdCBiYXRzPwpgYGB7cn0KaGl0cyA8LSA0MgphdF9iYXRzIDwtIDIxMgoKQmF0dGluZ19BdmVyYWdlID0gaGl0cy9hdF9iYXRzCkJhdHRpbmdfQXZlcmFnZQpgYGAKYGBge3J9CiNPbiBCYXNlIFBlcmNlbnRhZ2UKI09CUD0oSCtCQitIQlApLyhBdCBCYXRzK0JCK0hCUCtTRikKI0xldCB1cyBjb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzCiNBQj01MTUsSD0xNzIsQkI9ODQsSEJQPTUsU0Y9NgpPQlA9KDE3Mis4NCs1KS8oNTE1Kzg0KzUrNikKT0JQCmBgYApgYGB7cn0KT25fQmFzZV9QZXJjZW50YWdlPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQpPbl9CYXNlX1BlcmNlbnRhZ2UKYGBgClF1ZXN0aW9uXzM6Q29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0czoKQUI9NTY1LEg9MTU2LEJCPTY1LEhCUD0zLFNGPTcKYGBge3J9CkFCIDwtIDU2NSAgIyBBdC1iYXRzCkggPC0gMTU2ICAgIyBIaXRzCkJCIDwtIDY1ICAgIyBXYWxrcyAoQmFzZXMgb24gQmFsbHMpCkhCUCA8LSAzICAgIyBIaXQgYnkgUGl0Y2gKU0YgPC0gNyAgICAjIFNhY3JpZmljZSBGbGllcwoKT0JQIDwtIChIICsgQkIgKyBIQlApIC8gKEFCICsgQkIgKyBIQlAgKyBTRikKCk9CUApgYGAKCmBgYHtyfQozID09IDgjIERvZXMgMyBlcXVhbHMgOD8KYGBgCgpgYGB7cn0KMyAhPSA4IyBJcyAzIGRpZmZlcmVudCBmcm9tIDg/CmBgYAoKYGBge3J9CjMgPD0gOCMgSXMgMyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOD8KYGBgCgpgYGB7cn0KMz40CmBgYApgYGB7cn0KIyBMb2dpY2FsIERpc2p1bmN0aW9uIChvcikKRkFMU0UgfCBGQUxTRSAjIEZhbHNlIE9SIEZhbHNlCmBgYApgYGB7cn0KIyBMb2dpY2FsIENvbmp1bmN0aW9uIChhbmQpClRSVUUgJiBGQUxTRSAjVHJ1ZSBBTkQgRmFsc2UKYGBgCmBgYHtyfQojIE5lZ2F0aW9uCiEgRkFMU0UgIyBOb3QgRmFsc2UKYGBgCmBgYHtyfQojIENvbWJpbmF0aW9uIG9mIHN0YXRlbWVudHMKMiA8IDMgfCAxID09IDUgIyAyPDMgaXMgVHJ1ZSwgMT09NSBpcyBGYWxzZSwgVHJ1ZSBPUiBGYWxzZSBpcyBUcnVlCmBgYApBc3NpZ25pbmcgVmFsdWVzIHRvIFZhcmlhYmxlcwpgYGB7cn0KVG90YWxfQmFzZXMgPC0gNiArIDUKVG90YWxfQmFzZXMqMwpgYGAKYGBge3J9CmxzKCkKYGBgCmBgYHtyfQpybShUb3RhbF9CYXNlcykKYGBgClZlY3RvcnMKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5ncyA8LSBjKDEyLCAxNSwgMTAsIDIwLCAxMCkgCnBpdGNoZXNfYnlfaW5uaW5ncwpgYGAKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5ncyA8LSBjKDksIDEyLCA2LCAxNCwgOSkKc3RyaWtlc19ieV9pbm5pbmdzCmBgYApRdWVzdGlvbl80OiBEZWZpbmUgdHdvIHZlY3RvcnMscnVuc19wZXJfOWlubmluZ3MgYW5kIGhpdHNfcGVyXzlpbm5pbmdzLCBlYWNoIHdpdGggZml2ZSBlbGVtZW50cy4gCmBgYHtyfQpydW5zX3Blcl85aW5uaW5ncyA8LSBjKDQuNSwgMy44LCA1LjIsIDQuMSwgMy45KQpoaXRzX3Blcl85aW5uaW5ncyA8LSBjKDguNywgNy45LCA5LjIsIDguMywgNy44KQoKcnVuc19wZXJfOWlubmluZ3MKaGl0c19wZXJfOWlubmluZ3MKYGBgCmBgYHtyfQojIHJlcGxpY2F0ZSBmdW5jdGlvbgpyZXAoMiwgNSkKYGBgCmBgYHtyfQpyZXAoMSw0KQoKYGBgCmBgYHtyfQojIGNvbnNlY3V0aXZlIG51bWJlcnMKMTo1CmBgYApgYGB7cn0KMjoxMApgYGAKYGBge3J9CnNlcSgxLCAxMCwgYnk9MikKYGBgCmBgYHtyfQpzZXEoMiwxMyxieT0zKQpgYGAKYGBge3J9CiMgYWRkIHZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncwpgYGAKYGBge3J9CiMgY29tcGFyZSB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncyA9PSBzdHJpa2VzX2J5X2lubmluZ3MKYGBgCmBgYHtyfQojIGZpbmQgbGVuZ3RoIG9mIHZlY3RvcgpsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKYGBge3J9CiMgZmluZCBtaW5pbXVtIHZhbHVlIGluIHZlY3RvcgptaW4ocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKYGBge3J9CiMgZmluZCBhdmVyYWdlIHZhbHVlIGluIHZlY3RvcgptZWFuKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MKYGBgCmBgYHtyfQojIElmIHlvdSB3YW50IHRvIGdldCB0aGUgZmlyc3QgZWxlbWVudDoKcGl0Y2hlc19ieV9pbm5pbmdzWzFdCmBgYApRdWVzdGlvbl81OiBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgaGl0c19wZXJfOWlubmluZ3MuCmBgYHtyfQpoaXRzX3Blcl85aW5uaW5nc1sxXQpgYGAKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5nc1tsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKV0KYGBgClF1ZXN0aW9uXzY6IEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIGhpdHNfcGVyXzlpbm5pbmdzLgpgYGB7cn0KaGl0c19wZXJfOWlubmluZ3NbNV0KYGBgCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbYygyLCAzLCA0KV0KYGBgCkRhdGEgRnJhbWVzCmBgYHtyfQpkYXRhLmZyYW1lKGJvbnVzID0gYygyLCAzLCAxKSwjaW4gbWlsbGlvbnMgCiAgICAgICAgICAgYWN0aXZlX3Jvc3RlciA9IGMoInllcyIsICJubyIsICJ5ZXMiKSwgCiAgICAgICAgICAgc2FsYXJ5ID0gYygxLjUsIDIuNSwgMSkpI2luIG1pbGxpb25zIApgYGAKSG93IHRvIE1ha2UgYSBSYW5kb20gU2FtcGxlCmBgYHtyfQpzYW1wbGUoMToxMCwgc2l6ZT01KQpgYGAKCmBgYHtyfQpiYXIgPC0gZGF0YS5mcmFtZSh2YXIxID0gTEVUVEVSU1sxOjEwXSwgdmFyMiA9IDE6MTApCiMgQ2hlY2sgZGF0YSBmcmFtZQpiYXIKYGBgCmBgYHtyfQpuIDwtIDUKYGBgCgpgYGB7cn0Kc2FtcGxlcm93cyA8LSBzYW1wbGUoMTpucm93KGJhciksIHNpemU9bikgCiMgcHJpbnQgc2FtcGxlIHJvd3MKc2FtcGxlcm93cwpgYGAKCmBgYHtyfQojIGV4dHJhY3Qgcm93cwpiYXJzYW1wbGUgPC0gYmFyW3NhbXBsZXJvd3MsIF0KIyBwcmludCBzYW1wbGUKcHJpbnQoYmFyc2FtcGxlKQpgYGAKCmBgYHtyfQpiYXJbc2FtcGxlKDE6bnJvdyhiYXIpLCBuKSwgXQpgYGAKClVzaW5nIFRhYmxlcwpgYGB7cn0KeCA8LSBjKCJZZXMiLCJObyIsIk5vIiwiWWVzIiwiWWVzIikgCnRhYmxlKHgpCmBgYApOdW1lcmljYWwgbWVhc3VyZXMgb2YgY2VudGVyIGFuZCBzcHJlYWQKYGBge3J9CnNhbHMgPC0gYygxMiwgLjQsIDUsIDIsIDUwLCA4LCAzLCAxLCA0LCAwLjI1KQojIHRoZSBhdmVyYWdlCm1lYW4oc2FscykgCmBgYApgYGB7cn0KIyB0aGUgdmFyaWFuY2UKdmFyKHNhbHMpCmBgYAoKYGBge3J9CiMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgpzZChzYWxzKQpgYGAKCmBgYHtyfQojIHRoZSBtZWRpYW4KbWVkaWFuKHNhbHMpCmBgYAoKYGBge3J9CiMgVHVrZXkncyBmaXZlIG51bWJlciBzdW1tYXJ5LCB1c2VmdWxsIGZvciBib3hwbG90cwojIGZpdmUgbnVtYmVyczogbWluLCBsb3dlciBoaW5nZSwgbWVkaWFuLCB1cHBlciBoaW5nZSwgbWF4CmZpdmVudW0oc2FscykKYGBgCgpgYGB7cn0KIyBzdW1tYXJ5IHN0YXRpc3RpY3MKc3VtbWFyeShzYWxzKQpgYGAKSG93IGFib3V0IHRoZSBtb2RlPwpgYGB7cn0KIyBGdW5jdGlvbiB0byBmaW5kIHRoZSBtb2RlLCBpLmUuIG1vc3QgZnJlcXVlbnQgdmFsdWUKZ2V0TW9kZSA8LSBmdW5jdGlvbih4KSB7CiAgICAgdXggPC0gdW5pcXVlKHgpCiAgICAgdXhbd2hpY2gubWF4KHRhYnVsYXRlKG1hdGNoKHgsIHV4KSkpXQogfQpgYGAKCmBgYHtyfQojIE1vc3QgZnJlcXVlbnQgdmFsdWUgaW4gcGl0Y2hlc19ieV9pbm5pbmdzCmdldE1vZGUocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKUXVlc3Rpb25fNzogRmluZCB0aGUgbW9zdCBmcmVxdWVudCB2YWx1ZSBvZiBoaXRzX3Blcl85aW5uaW5ncy4KYGBge3J9CmdldE1vZGUoaGl0c19wZXJfOWlubmluZ3MpCmBgYApRdWVzdGlvbl84OiBTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBzdXJ2ZXkgd2l0aCB0aGUgYHRhYmxlKClgIGNvbW1hbmQ6CldoYXQgaXMgeW91ciBmYXZvcml0ZSBkYXkgb2YgdGhlIHdlZWsgdG8gd2F0Y2ggYmFzZWJhbGw/IEEgdG90YWwgb2YgMTAgZmFucyBzdWJtaXR0ZWQgdGhpcyBzdXJ2ZXkuClNhdHVyZGF5LCBTYXR1cmRheSwgU3VuZGF5LCBNb25kYXksIFNhdHVyZGF5LFR1ZXNkYXksIFN1bmRheSwgRnJpZGF5LCBGcmlkYXksIE1vbmRheQpgYGB7cn0KZ2FtZV9kYXk8LWMoIlNhdHVyZGF5IiwgIlNhdHVyZGF5IiwgIlN1bmRheSIsICJNb25kYXkiLCAiU2F0dXJkYXkiLCJUdWVzZGF5IiwgIlN1bmRheSIsICJGcmlkYXkiLCAiRnJpZGF5IiwgIk1vbmRheSIpCmdhbWVfZGF5PC1jKCJTYXR1cmRheSIsICJTYXR1cmRheSIsICJTdW5kYXkiLCAiTW9uZGF5IiwgIlNhdHVyZGF5IiwiVHVlc2RheSIsICJTdW5kYXkiLCAiRnJpZGF5IiwgIkZyaWRheSIsICJNb25kYXkiKQoKdGFibGUoZ2FtZV9kYXkpCmBgYApRdWVzdGlvbl85OiBXaGF0IGlzIHRoZSBtb3N0IGZyZXF1ZW50IGFuc3dlciByZWNvcmRlZCBpbiB0aGUgc3VydmV5PyBVc2UgdGhlIGdldE1vZGUgZnVuY3Rpb24gdG8gY29tcHV0ZSByZXN1bHRzLiAKYGBge3J9CmdldE1vZGUoZ2FtZV9kYXkpCmBgYAoK