1+1
[1] 2
7-8
[1] -1
(2+5i)  + (3+1i)
[1] 5+6i
4/2
[1] 2
6/12
[1] 0.5
2^3
[1] 8
sqrt(25)
[1] 5
sqrt(16)
[1] 4
sqrt(144)
[1] 12
log(2)
[1] 0.6931472
log(10)
[1] 2.302585
log(2.72)
[1] 1.000632
log10(10)
[1] 1

Question 1: Compue the Log base 5 of 10 and the log of 10.

log(10,5)
[1] 1.430677
log(10,10)
[1] 1
log(100,4)
[1] 3.321928

Computing some offensive metrics in Baseball

#Battling Average=(No. of Hits)/(No. of At Bats)
#What is the Battling average of a player that bats 29 hits in 412 at bats?
BA=129/412
BA
[1] 0.3131068
#Alternative Solutiuon
N_Hits = 129
At_Bats= 412
BA<-N_Hits/At_Bats
BA
[1] 0.3131068
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.313

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
Batting_Average=round(Bat_Average,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
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_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
2==3
[1] FALSE
1==1
[1] TRUE
3>=1
[1] TRUE
3>=9
[1] FALSE
7<=10
[1] TRUE
7<=6
[1] FALSE
3!=4
[1] TRUE

The logical operators are & for logical AND, | for logical OR, and ! for NOT. These are some examples:

#Logical 
FALSE|TRUE
[1] TRUE
# 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
total_bases<-7+4
total_bases*4
[1] 44
ls()
 [1] "At_Bats"         "At_Bats1"        "BA"              "Bat_Average"     "Batting_Average" "N_Hits"          "OBP"             "OBP_ad"         
 [9] "OBP_Adj"         "total_bases"    
rm(total_bases)
Warning in rm(total_bases) : object 'total_bases' not found
ls()
[1] "At_Bats"         "At_Bats1"        "BA"              "Bat_Average"     "Batting_Average" "N_Hits"          "OBP"             "OBP_ad"         
[9] "OBP_Adj"        

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(15,12,10,8,7)
hits_per_9innings <-c(6,12,8,10,13)

runs_per_9innings
[1] 15 12 10  8  7
hits_per_9innings
[1]  6 12  8 10 13
#replicate function

rep(2,5)
[1] 2 2 2 2 2
rep(3,3)
[1] 3 3 3
# consecutuive numbers
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=3)
[1]  1  4  7 10

seq(2,13,by=3)
[1]  2  5  8 11
# adding vectors
pitches_by_innings + strikes_by_innings # + operator
[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
length(pitches_by_innings)
[1] 5

min(pitches_by_innings)
[1] 10
# finding the average in the vecotr
mean(pitches_by_innings)
[1] 13.4
# findin the first vector
pitches_by_innings[1]
[1] 12

Question_5: Get the first element of hits_per_9innings.

hits_per_9innings
[1]  6 12  8 10 13
hits_per_9innings[1]
[1] 6
pitches_by_innings
[1] 12 15 10 20 10
pitches_by_innings[length(pitches_by_innings)]
[1] 10
hits_per_9innings
[1]  6 12  8 10 13
hits_per_9innings[length(hits_per_9innings)]
[1] 13
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"  "outfielders"

Data Frame

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,15,8,3,1,4,.25)
mean(ceo_salaries)
[1] 5.072222
var(ceo_salaries)
[1] 252.5907
sd(ceo_salaries)
[1] 15.87257
median(ceo_salaries)
[1] 3
fivenum(ceo_salaries)
[1]  0.25  1.00  3.00  8.00 15.00
#(12,.4,2,50,8,3,1,4,.25)
#.25,.4,1,2,3,4,8,12,15
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
# Most frequent value in pitches_by_innings
getmode(pitches_by_innings)
[1] 10

Question_7: Find the most frequent value of hits_per_9innings.

hits_per_9innings
[1]  6 12  8 10 13
getmode(hits_per_9innings)
[1] 6
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)
LS0tCnRpdGxlOiAiR2V0dGluZyBTdGFydGVkIHdpdGggUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KMSsxCmBgYAoKCmBgYHtyfQo3LTgKYGBgCgpgYGB7cn0KKDIrNWkpICArICgzKzFpKQpgYGAKCmBgYHtyfQo0LzIKYGBgCmBgYHtyfQo2LzEyCmBgYAoKYGBge3J9CjJeMwpgYGAKCmBgYHtyfQpzcXJ0KDI1KQpzcXJ0KDE2KQpzcXJ0KDE0NCkKYGBgCgpgYGB7cn0KbG9nKDIpICMgTmF0dXJlYWwgbG9nCmBgYAoKYGBge3J9CmxvZygxMCkKbG9nKDIuNzIpCmBgYAoKYGBge3J9CmxvZzEwKDEwKQpgYGAKCiAqKlF1ZXN0aW9uIDE6IENvbXB1ZSB0aGUgTG9nIGJhc2UgNSBvZiAxMCBhbmQgdGhlIGxvZyBvZiAxMC4qKgpgYGB7cn0KCiMgQW5zd2VyczoiIFF1ZXN0aW9uIDEKbG9nKDEwLDUpICNMb2cgb2YgMTAgQmFzZSA1CmxvZygxMCwxMCkgI0xvZyBvZiAxMCBCYXNlIDEwCmxvZygxMDAsNCkgI0xvZyBvZiAxMDAgYmFzZSA0CmBgYAoKKipDb21wdXRpbmcgc29tZSBvZmZlbnNpdmUgbWV0cmljcyBpbiBCYXNlYmFsbCoqCmBgYHtyfQojQmF0dGxpbmcgQXZlcmFnZT0oTm8uIG9mIEhpdHMpLyhOby4gb2YgQXQgQmF0cykKI1doYXQgaXMgdGhlIEJhdHRsaW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDI5IGhpdHMgaW4gNDEyIGF0IGJhdHM/CkJBPTEyOS80MTIKQkEKI0FsdGVybmF0aXZlIFNvbHV0aXVvbgpOX0hpdHMgPSAxMjkKQXRfQmF0cz0gNDEyCkJBPC1OX0hpdHMvQXRfQmF0cwpCQQpCYXR0aW5nX0F2ZXJhZ2U9cm91bmQoQkEsZGlnaXRzID0gMykKQmF0dGluZ19BdmVyYWdlCmBgYAoKCioqUXVlc3Rpb24gMjpXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/KioKYGBge3J9CiNBbnN3ZXJzCk5fSGl0cz00MgpBdF9CYXRzMSA9IDIxMgpCYXRfQXZlcmFnZTwtTl9IaXRzL0F0X0JhdHMxCkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCYXRfQXZlcmFnZSxkaWdpdHMgPSAzKQpCYXR0aW5nX0F2ZXJhZ2UKYGBgCgoKYGBge3J9CiNPbiBCYXNlIFBlcmNlbnRhZ2UKI09CUD0oSCtCQitIQlApLyhBdCBCYXRzK0JCK0hCUCtTRikKI0xldCB1cyBjb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzCiNBQj01MTUsSD0xNzIsQkI9ODQsSEJQPTUsU0Y9NgpPQlA9KDE3Mis4NCs1KS8oNTE1Kzg0KzUrNikKT0JQCk9CUF9BZGo9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9CUF9BZGoKYGBgCgoKKipRdWVzdGlvbl8zOkNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RhdHM6KioKCmBgYHtyfQojQUI9NTY1LEg9MTU2LEJCPTY1LEhCUD0zLFNGPTcKT0JQPSgxNTYrNjUrMykvKDU2NSs2NSszKzE1Nis3KQpPQlBfYWQ9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9CUF9hZApgYGAKCgoKCgoqKk9mdGVuIHlvdSB3aWxsIHdhbnQgdG8gdGVzdCB3aGV0aGVyIHNvbWV0aGluZyBpcyBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzb21ldGhpbmcuKioKYGBge3J9CjM9PTgKMj09MwoxPT0xCjM+PTEKMz49OQo3PD0xMAo3PD02CjMhPTQKYGBgCgoKCioqVGhlIGxvZ2ljYWwgb3BlcmF0b3JzIGFyZSAmIGZvciBsb2dpY2FsIEFORCwgfCBmb3IgbG9naWNhbCBPUiwgYW5kICEgZm9yIE5PVC4gVGhlc2UgYXJlIHNvbWUgZXhhbXBsZXM6KioKCmBgYHtyfQojTG9naWNhbCAKRkFMU0V8VFJVRQpgYGAKCgoKCmBgYHtyfQojIExvZ2ljYWwgRGlzanVuY3Rpb24gKG9yKQpGQUxTRSB8IEZBTFNFICMgRmFsc2UgT1IgRmFsc2UKYGBgCgpgYGB7cn0KIyBMb2dpY2FsIENvbmp1bmN0aW9uIChhbmQpClRSVUUgJiBGQUxTRSAjVHJ1ZSBBTkQgRmFsc2UKYGBgCgoKCmBgYHtyfQojIE5lZ2F0aW9uCiEgRkFMU0UgIyBOb3QgRmFsc2UKYGBgCgoKCmBgYHtyfQojIENvbWJpbmF0aW9uIG9mIHN0YXRlbWVudHMKMiA8IDMgfCAxID09IDUgIyAyPDMgaXMgVHJ1ZSwgMT09NSBpcyBGYWxzZSwgVHJ1ZSBPUiBGYWxzZSBpcyBUcnVlCmBgYAoKCgpgYGB7cn0KdG90YWxfYmFzZXM8LTcrNAp0b3RhbF9iYXNlcyo0CmBgYAoKCgpgYGB7cn0KbHMoKQpgYGAKCgoKCgpgYGB7cn0Kcm0odG90YWxfYmFzZXMpCmxzKCkKYGBgCgoKCgoKCioqVmVjdG9ycyoqCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3M8LWMoMTIsMTUsMTAsMjAsMTApCnBpdGNoZXNfYnlfaW5uaW5ncwoKYGBgCgoKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5nczwtIGMoOSwxMiw2LDE0LDkpCnN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKKipRdWVzdGlvbl80OiBEZWZpbmUgdHdvIHZlY3RvcnMscnVuc19wZXJfOWlubmluZ3MgYW5kIGhpdHNfcGVyXzlpbm5pbmdzLCBlYWNoIHdpdGggZml2ZSBlbGVtZW50cy4gKioKCmBgYHtyfQpydW5zX3Blcl85aW5uaW5ncyA8LWMoMTUsMTIsMTAsOCw3KQpoaXRzX3Blcl85aW5uaW5ncyA8LWMoNiwxMiw4LDEwLDEzKQoKcnVuc19wZXJfOWlubmluZ3MKaGl0c19wZXJfOWlubmluZ3MKYGBgCgoKCgoKCgpgYGB7cn0KI3JlcGxpY2F0ZSBmdW5jdGlvbgoKcmVwKDIsNSkKCgoKYGBgCgoKCmBgYHtyfQpyZXAoMywzKQpgYGAKCgoKYGBge3J9CiMgY29uc2VjdXR1aXZlIG51bWJlcnMKMTo2CmBgYAoKCgoKCgoKCgoKCmBgYHtyfQoyOjcKYGBgCgoKCgpgYGB7cn0KIyBTZXF1ZW5jZSBmcm9tIDEgdG8gMTAgd2l0aCBhIHN0ZXAgb2YgMiAKCgpzZXEoMSwxMCxieT0zKQoKYGBgCgoKCmBgYHtyfQoKc2VxKDIsMTMsYnk9MykKYGBgCgoKCgoKCgoKCgoKCgoKCgoKCmBgYHtyfQojIGFkZGluZyB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncyArIHN0cmlrZXNfYnlfaW5uaW5ncyAjICsgb3BlcmF0b3IKYGBgCgoKCgoKYGBge3J9CiNjb21wYXJlIHR3byB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncwpzdHJpa2VzX2J5X2lubmluZ3MKcGl0Y2hlc19ieV9pbm5pbmdzID09IHN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCgoKCgoKCgoKCmBgYHtyfQojc2hvd2luZyBob3cgbWFueSBlbGVtZW50cyBpbiB0aGUgdmVjb3RyCmxlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKCgoKCgpgYGB7cn0KIyBmaW5kaW5nIHRoZSBtaW5pbXVtIGluIHRoZSB2ZWN0b3IKbWluKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgoKCgoKCgoKCmBgYHtyfQojIGZpbmRpbmcgdGhlIG1lYW4gaW4gdGhlIHZlY3RvcgptZWFuKHBpdGNoZXNfYnlfaW5uaW5ncykKCmBgYAoKCgoKCgoKCgpgYGB7cn0KIyBmaW5kaW4gdGhlIGZpcnN0IHZlY3RvcgpwaXRjaGVzX2J5X2lubmluZ3NbMV0KYGBgCgoKKipRdWVzdGlvbl81OiBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgaGl0c19wZXJfOWlubmluZ3MuKioKYGBge3J9CmhpdHNfcGVyXzlpbm5pbmdzCmhpdHNfcGVyXzlpbm5pbmdzWzFdCmBgYAoKCgoKCgoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MKcGl0Y2hlc19ieV9pbm5pbmdzW2xlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpXQpgYGAKCgoKCgoKCmBgYHtyfQpoaXRzX3Blcl85aW5uaW5ncwpoaXRzX3Blcl85aW5uaW5nc1tsZW5ndGgoaGl0c19wZXJfOWlubmluZ3MpXQpgYGAKCgoKCgoKCgoKCgoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MKcGl0Y2hlc19ieV9pbm5pbmdzW2MoMTozKV0KYGBgCgoKCgoKCgpgYGB7cn0KcGxheWVyX3Bvc2l0aW9uczwtYygiY2F0Y2hlciIsInBpdGNoZXIiLCJpbmZpZWxkZXJzIiwib3V0ZmllbGRlcnMiKQpwbGF5ZXJfcG9zaXRpb25zCmBgYAoKCgoKCgoKCgoKKipEYXRhIEZyYW1lKioKCgoKCgoKCmBgYHtyfQpkYXRhLmZyYW1lKGJvbnVzPWMoMiwzLDEpLGFjdGl2ZV9yb3N0ZXI9YygieWVzIiwibm8iLCJ5ZXMiKSxzYWxhcnk9YygxLjUsMi41LDEpKQpgYGAKCgoKCgoKKip1c2luZyBUYWJsZXMqKgoKCmBgYHtyfQp4PC1jKCJ5ZXMiLCJubyIsIm5vIiwieWVzIiwieWVzIikKdGFibGUoeCkKYGBgCgoKCgoKKipOdW1lcmljYWwgbWVhc3VyZXMgYW5kIGNlbnRlciBvZiBzcHJlYWQqKgoKYGBge3J9CmNlb19zYWxhcmllczwtYygxMiwuNCwyLDE1LDgsMywxLDQsLjI1KQptZWFuKGNlb19zYWxhcmllcykKYGBgCgoKCgoKYGBge3J9CiN2YXI9IFZhcmlhbnQKdmFyKGNlb19zYWxhcmllcykKYGBgCgoKCgpgYGB7cn0KI3NkID0gU3RhbmRhcmQgRGV2aWF0aW9uCnNkKGNlb19zYWxhcmllcykKYGBgCgoKCmBgYHtyfQptZWRpYW4oY2VvX3NhbGFyaWVzKQpgYGAKCgoKCmBgYHtyfQpmaXZlbnVtKGNlb19zYWxhcmllcykKIygxMiwuNCwyLDUwLDgsMywxLDQsLjI1KQojLjI1LC40LDEsMiwzLDQsOCwxMiwxNQoKYGBgCgoKCgoKCgoKCgoKYGBge3J9CiMgRnVuY3Rpb24gdG8gZmluZCB0aGUgbW9kZSwgaS5lLiBtb3N0IGZyZXF1ZW50IHZhbHVlCmdldG1vZGU8LWZ1bmN0aW9uKHgpewogIHV4PC11bmlxdWUoeCkKICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCx1eCkpKV0KfQpgYGAKCgoKCgoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5ncwpnZXRtb2RlKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgoKCmBgYHtyfQojIE1vc3QgZnJlcXVlbnQgdmFsdWUgaW4gcGl0Y2hlc19ieV9pbm5pbmdzCmdldG1vZGUocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCgoKKipRdWVzdGlvbl83OiBGaW5kIHRoZSBtb3N0IGZyZXF1ZW50IHZhbHVlIG9mIGhpdHNfcGVyXzlpbm5pbmdzLioqCgpgYGB7cn0KaGl0c19wZXJfOWlubmluZ3MKZ2V0bW9kZShoaXRzX3Blcl85aW5uaW5ncykKYGBgCgoKCgpgYGB7cn0KZ2FtZV9kYXk8LWMoIlNhdHVyZGF5IiwgIlNhdHVyZGF5IiwgIlN1bmRheSIsICJNb25kYXkiLCAiU2F0dXJkYXkiLCJUdWVzZGF5IiwgIlN1bmRheSIsICJGcmlkYXkiLCAiRnJpZGF5IiwgIk1vbmRheSIpCnRhYmxlKGdhbWVfZGF5KQpgYGAKCgoKCmBgYHtyfQpnZXRtb2RlKGdhbWVfZGF5KQpgYGAKCgoKCgoKCgoKCg==