#Subtraction
2-3
[1] -1
#Addition
9+6
[1] 15
#Division
2/5
[1] 0.4
#Exponentiation
4^5
[1] 1024
#Square root
sqrt(2)
[1] 1.414214
#Logarithms
log(4) #Natural log
[1] 1.386294

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

#Answers: Question 1
log(10,5)# Log of 5, Base 10
log(10,10)# Log of 10, Base 10
log(100,4) # Log of 100, Base 4

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
#Alternative Solution
N_Hits=29
At_Bats=112
BA<-N_Hits/At_Bats
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?

#Answers
N_Hits=42
At_Bats1=212
Bat_Average<-N_Hits/At_Bats1
BattingAverage=round(Bat_Average,digits = 3)
BattingAverage
[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
OBP_Adj=round(OBP,digits = 3)
OBP_Adj
[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=(156+65+3)/(565+65+3+156+7)
OBP
[1] 0.281407
OBP_ad=round(OBP,digits=3)
OBP_ad
[1] 0.281

Often you will want to test whether something is less than, greater than or equal to something.

3==8
[1] FALSE
3!=8
[1] TRUE
3<=8
[1] TRUE
3>4
[1] FALSE
# Logical Disjunction (or)
FALSE|FALSE # False OR False
[1] FALSE
TRUE&FALSE
[1] FALSE
!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

#In R, you create a variable and assign it a value using <- as follow
Total_Bases<-6+5
Total_Bases*3
[1] 33
#To see the variables that are currently defined, use ls (as in “list”)

ls()
 [1] "At_Bats"         "At_Bats1"       
 [3] "BA"              "Bat_Average"    
 [5] "Batting_Average" "BattingAverage" 
 [7] "N_Hits"          "OBP"            
 [9] "OBP_ad"          "OBP_adj"        
[11] "OBP_Adj"         "Total_Bases"    
#To delete a variable, use rm (as in “remove”)
rm(Total_Bases)

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.

rep(2,5)
[1] 2 2 2 2 2
rep(3,3)
[1] 3 3 3
1:6
[1] 1 2 3 4 5 6
2:7
[1] 2 3 4 5 6 7
#sequence from 1 to 10 with a step of 2
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 two vectors
pitches_by_innings
[1] 12 15 10 20 10
strikes_by_innings
[1]  9 12  6 14  9
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
mean(pitches_by_innings)
[1] 13.4
pitches_by_innings[1]
[1] 12
pitches_by_innings[length(pitches_by_innings)]
[1] 10
pitches_by_innings
[1] 12 15 10 20 10
pitches_by_innings[c(1:3)]
[1] 12 15 10
player_positions <- c("catcher","pitcher","infielders","outfielders")
player_positions
[1] "catcher"     "pitcher"     "infielders" 
[4] "outfielders"

Data Frames

data.frame(bonus=c(2,3,1),active_roster=c("yes","no","yes"), 
salary=c(1.5,2.5,1))

Using Tables

x<-c("Yes","No","No","Yes","Yes")
table(x)
x
 No Yes 
  2   3 

Numerical measures and center of spread

ceo_salaries<-c(12,.4,2,50,8,3,1,4,.25)
mean(ceo_salaries)
[1] 8.961111
var(ceo_salaries)
[1] 251.9386
sd(ceo_salaries)
[1] 15.87257
median(ceo_salaries)
[1] 3
fivenum(ceo_salaries)
[1]  0.25  1.00  3.00  8.00 50.00
#12,.4,2,15,8,3,1,4,.25
getMode<-function(x) {
  ux<-unique(x)
  ux[which.max(tabulate(match(x,ux)))]
}
pitches_by_innings
[1] 12 15 10 20 10
getMode(pitches_by_innings)
[1] 10
strikes_by_innings
[1]  9 12  6 14  9
getMode(strikes_by_innings)
[1] 9
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 
getMode(game_day)
[1] "Saturday"
LS0tDQp0aXRsZTogIkdldHRpbmcgU3RhcnRlZCB3aXRoIFIiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfSANCiNTdWJ0cmFjdGlvbg0KMi0zDQpgYGANCmBgYHtyfQ0KI0FkZGl0aW9uDQo5KzYNCmBgYA0KYGBge3J9DQojRGl2aXNpb24NCjIvNQ0KYGBgDQpgYGB7cn0NCiNFeHBvbmVudGlhdGlvbg0KNF41DQpgYGANCmBgYHtyfQ0KI1NxdWFyZSByb290DQpzcXJ0KDIpDQpgYGANCmBgYHtyfQ0KI0xvZ2FyaXRobXMNCmxvZyg0KSAjTmF0dXJhbCBsb2cNCmBgYA0KDQoqKlF1ZXN0aW9uXzE6IENvbXB1dGUgdGhlIGxvZyBiYXNlIDUgb2YgMTAgYW5kIHRoZSBsb2cgb2YgMTAuKioNCmBgYHtyfQ0KI0Fuc3dlcnM6IFF1ZXN0aW9uIDENCmxvZygxMCw1KSMgTG9nIG9mIDUsIEJhc2UgMTANCmxvZygxMCwxMCkjIExvZyBvZiAxMCwgQmFzZSAxMA0KbG9nKDEwMCw0KSAjIExvZyBvZiAxMDAsIEJhc2UgNA0KYGBgDQoNCg0KKipDb21wdXRpbmcgc29tZSBvZmZlbnNpdmUgbWV0cmljcyBpbiBCYXNlYmFsbCoqDQpgYGB7cn0NCiNCYXR0aW5nIEF2ZXJhZ2U9KE5vLiBvZiBoaXRzKS8oTm8uIG9mIEF0IEJhdHMpDQojV2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyAyOSBoaXRzIGluIDExMiBhdCBiYXRzPw0KQkE9MjkvMTEyDQpCQQ0KI0FsdGVybmF0aXZlIFNvbHV0aW9uDQpOX0hpdHM9MjkNCkF0X0JhdHM9MTEyDQpCQTwtTl9IaXRzL0F0X0JhdHMNCkJBDQojUm91bmRpbmcNCkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCQSxkaWdpdHMgPSAzKQ0KQmF0dGluZ19BdmVyYWdlDQpgYGANCg0KKipRdWVzdGlvbl8yOiBXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/KioNCmBgYHtyfQ0KI0Fuc3dlcnMNCk5fSGl0cz00Mg0KQXRfQmF0czE9MjEyDQpCYXRfQXZlcmFnZTwtTl9IaXRzL0F0X0JhdHMxDQpCYXR0aW5nQXZlcmFnZT1yb3VuZChCYXRfQXZlcmFnZSxkaWdpdHMgPSAzKQ0KQmF0dGluZ0F2ZXJhZ2UNCmBgYA0KYGBge3J9DQojT24gQmFzZSBQZXJjZW50YWdlDQojT0JQPShIK0JCK0hCUCkvKEF0IEJhdHMrQkIrSEJQK1NGKQ0KI0xldCB1cyBjb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzDQojQUI9NTE1LEg9MTcyLEJCPTg0LEhCUD01LFNGPTYNCk9CUD0oMTcyKzg0KzUpLyg1MTUrODQrNSs2KQ0KT0JQDQpPQlBfQWRqPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQ0KT0JQX0Fkag0KYGBgDQoqKlF1ZXN0aW9uXzM6Q29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0cyoqDQpgYGB7cn0NCiNBQj01NjUsSD0xNTYsQkI9NjUsSEJQPTMsU0Y9Nw0KT0JQPSgxNTYrNjUrMykvKDU2NSs2NSszKzE1Nis3KQ0KT0JQDQpPQlBfYWQ9cm91bmQoT0JQLGRpZ2l0cz0zKQ0KT0JQX2FkDQoNCmBgYA0KKipPZnRlbiB5b3Ugd2lsbCB3YW50IHRvIHRlc3Qgd2hldGhlciBzb21ldGhpbmcgaXMgbGVzcyB0aGFuLCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc29tZXRoaW5nLioqDQpgYGB7cn0NCjM9PTgNCjMhPTgNCjM8PTgNCjM+NA0KYGBgDQpgYGB7cn0NCiMgTG9naWNhbCBEaXNqdW5jdGlvbiAob3IpDQpGQUxTRXxGQUxTRSAjIEZhbHNlIE9SIEZhbHNlDQpUUlVFJkZBTFNFDQohRkFMU0UNCiMgQ29tYmluYXRpb24gb2Ygc3RhdGVtZW50cw0KMjwzfDE9PTUgIyAyPDMgaXMgVHJ1ZSwgMT09NSBpcyBGYWxzZSwgVHJ1ZSBPUiBGYWxzZSBpcyBUcnVlDQpgYGANCg0KKipBc3NpZ25pbmcgVmFsdWVzIHRvIFZhcmlhYmxlcyoqDQpgYGB7cn0NCiNJbiBSLCB5b3UgY3JlYXRlIGEgdmFyaWFibGUgYW5kIGFzc2lnbiBpdCBhIHZhbHVlIHVzaW5nIDwtIGFzIGZvbGxvdw0KVG90YWxfQmFzZXM8LTYrNQ0KVG90YWxfQmFzZXMqMw0KYGBgDQpgYGB7cn0NCiNUbyBzZWUgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBjdXJyZW50bHkgZGVmaW5lZCwgdXNlIGxzIChhcyBpbiDigJxsaXN04oCdKQ0KDQpscygpDQpgYGANCmBgYHtyfQ0KI1RvIGRlbGV0ZSBhIHZhcmlhYmxlLCB1c2Ugcm0gKGFzIGluIOKAnHJlbW92ZeKAnSkNCnJtKFRvdGFsX0Jhc2VzKQ0KDQpgYGANCg0KKipWZWN0b3JzKioNCg0KDQpgYGB7cn0NCnBpdGNoZXNfYnlfaW5uaW5nczwtYygxMiwxNSwxMCwyMCwxMCkgDQpwaXRjaGVzX2J5X2lubmluZ3MNCmBgYA0KYGBge3J9DQpzdHJpa2VzX2J5X2lubmluZ3M8LWMoOSwxMiw2LDE0LDkpDQpzdHJpa2VzX2J5X2lubmluZ3MNCmBgYA0KKipRdWVzdGlvbl80OiBEZWZpbmUgdHdvIHZlY3RvcnMscnVuc19wZXJfOWlubmluZ3MgYW5kIGhpdHNfcGVyXzlpbm5pbmdzLCBlYWNoIHdpdGggZml2ZSBlbGVtZW50cy4qKg0KDQpgYGB7cn0NCnJlcCgyLDUpDQpgYGANCmBgYHtyfQ0KcmVwKDMsMykNCmBgYA0KYGBge3J9DQoxOjYNCmBgYA0KDQpgYGB7cn0NCjI6Nw0KYGBgDQpgYGB7cn0NCiNzZXF1ZW5jZSBmcm9tIDEgdG8gMTAgd2l0aCBhIHN0ZXAgb2YgMg0Kc2VxKDEsMTAsYnk9MikNCmBgYA0KYGBge3J9DQpzZXEoMiwxMyxieT0zKQ0KYGBgDQpgYGB7cn0NCiNhZGQgdmVjdG9ycw0KcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncw0KYGBgDQpgYGB7cn0NCiNjb21wYXJlIHR3byB2ZWN0b3JzDQpwaXRjaGVzX2J5X2lubmluZ3MNCnN0cmlrZXNfYnlfaW5uaW5ncw0KcGl0Y2hlc19ieV9pbm5pbmdzPT1zdHJpa2VzX2J5X2lubmluZ3MNCmBgYA0KYGBge3J9DQojZmluZCBsZW5ndGggb2YgdmVjdG9yDQpsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKQ0KYGBgDQpgYGB7cn0NCiMgZmluZCBtaW5pbXVtIHZhbHVlIGluIHZlY3Rvcg0KbWluKHBpdGNoZXNfYnlfaW5uaW5ncykNCmBgYA0KDQpgYGB7cn0NCm1lYW4ocGl0Y2hlc19ieV9pbm5pbmdzKQ0KYGBgDQpgYGB7cn0NCnBpdGNoZXNfYnlfaW5uaW5nc1sxXQ0KYGBgDQpgYGB7cn0NCnBpdGNoZXNfYnlfaW5uaW5nc1tsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKV0NCmBgYA0KYGBge3J9DQpwaXRjaGVzX2J5X2lubmluZ3MNCnBpdGNoZXNfYnlfaW5uaW5nc1tjKDE6MyldDQpgYGANCmBgYHtyfQ0KcGxheWVyX3Bvc2l0aW9ucyA8LSBjKCJjYXRjaGVyIiwicGl0Y2hlciIsImluZmllbGRlcnMiLCJvdXRmaWVsZGVycyIpDQpwbGF5ZXJfcG9zaXRpb25zDQpgYGANCioqRGF0YSBGcmFtZXMqKg0KYGBge3J9DQpkYXRhLmZyYW1lKGJvbnVzPWMoMiwzLDEpLGFjdGl2ZV9yb3N0ZXI9YygieWVzIiwibm8iLCJ5ZXMiKSwgDQpzYWxhcnk9YygxLjUsMi41LDEpKQ0KYGBgDQoNCioqVXNpbmcgVGFibGVzKioNCmBgYHtyfQ0KeDwtYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpDQp0YWJsZSh4KQ0KYGBgDQoqKk51bWVyaWNhbCBtZWFzdXJlcyBhbmQgY2VudGVyIG9mIHNwcmVhZCoqDQpgYGB7cn0NCmNlb19zYWxhcmllczwtYygxMiwuNCwyLDUwLDgsMywxLDQsLjI1KQ0KbWVhbihjZW9fc2FsYXJpZXMpDQpgYGANCmBgYHtyfQ0KdmFyKGNlb19zYWxhcmllcykNCmBgYA0KYGBge3J9DQpzZChjZW9fc2FsYXJpZXMpDQpgYGANCg0KYGBge3J9DQptZWRpYW4oY2VvX3NhbGFyaWVzKQ0KYGBgDQpgYGB7cn0NCmZpdmVudW0oY2VvX3NhbGFyaWVzKQ0KIzEyLC40LDIsMTUsOCwzLDEsNCwuMjUNCmBgYA0KYGBge3J9DQpnZXRNb2RlPC1mdW5jdGlvbih4KSB7DQogIHV4PC11bmlxdWUoeCkNCiAgdXhbd2hpY2gubWF4KHRhYnVsYXRlKG1hdGNoKHgsdXgpKSldDQp9DQpgYGANCg0KYGBge3J9DQpwaXRjaGVzX2J5X2lubmluZ3MNCmdldE1vZGUocGl0Y2hlc19ieV9pbm5pbmdzKQ0KYGBgDQpgYGB7cn0NCnN0cmlrZXNfYnlfaW5uaW5ncw0KZ2V0TW9kZShzdHJpa2VzX2J5X2lubmluZ3MpDQpgYGANCmBgYHtyfQ0KZ2FtZV9kYXk8LWMoIlNhdHVyZGF5IiwiU2F0dXJkYXkiLCJTdW5kYXkiLCJNb25kYXkiLCJTYXR1cmRheSIsIlR1ZXNkYXkiLCJTdW5kYXkiLCJGcmlkYXkiLCJGcmlkYXkiLCJNb25kYXkiKQ0KdGFibGUoZ2FtZV9kYXkpDQpgYGANCmBgYHtyfQ0KZ2V0TW9kZShnYW1lX2RheSkNCmBgYA0KDQo=