1+1
[1] 2
7-8
[1] -1
(2+5i) + (3-1i)
[1] 5+4i
4/2
[1] 2
6/12
[1] 0.5
2^2
[1] 4
2^5
[1] 32
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: Compute 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
#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=129/412
BA
[1] 0.3131068
#Alternative Solution
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
BattingAverage=round(Batting_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_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

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

# Logical Disjunction (or)
FALSE | FALSE # False OR False
[1] FALSE
FALSE|TRUE
[1] TRUE
TRUE  & FALSE
[1] FALSE
!TRUE
[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
2<1|2==3
[1] FALSE
total_bases<-7+4
total_bases*4
[1] 44
ls()
 [1] "At_Bats"         "At_Bats1"        "BA"              "Bat_Average"    
 [5] "Batting_Average" "BattingAverage"  "N_Hits"          "OBP"            
 [9] "OBP_ad"          "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"    
 [5] "Batting_Average" "BattingAverage"  "N_Hits"          "OBP"            
 [9] "OBP_ad"          "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
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
seq(1,10,by=3)
[1]  1  4  7 10
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
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[c(2,3,4)]
[1] 15 10 20
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 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
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"
LS0tCnRpdGxlOiAiR2V0dGluZyBzdGFydGVkIHdpdGggUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KMSsxCmBgYAoKCmBgYHtyfQo3LTgKYGBgCgpgYGB7cn0KI0NvbXBsZXggTnVtYmVycyAKKDIrNWkpICsgKDMtMWkpCmBgYAoKCgpgYGB7cn0KNC8yCmBgYAoKCmBgYHtyfQo2LzEyCmBgYAoKCmBgYHtyfQoyXjIKMl41CmBgYAoKYGBge3J9CnNxcnQoMjUpCnNxcnQoMTYpCnNxcnQoMTQ0KQpgYGAKCgpgYGB7cn0KbG9nKDIpICNOYXR1cmFsIGxvZyAKYGBgCgpgYGB7cn0KbG9nKDEwKQpsb2coMi43MikKYGBgCgoKYGBge3J9CmxvZzEwKDEwKQpgYGAKCioqUXVlc3Rpb24gMTogQ29tcHV0ZSB0aGUgbG9nIGJhc2UgNSBvZiAxMCBhbmQgdGhlIGxvZyBvZiAxMC4qKgoKCgpgYGB7cn0KI0Fuc3dlcnM6IFF1ZXN0aW9uIDEgCmxvZygxMCw1KSAjIGxvZyBvZiAxMCwgQmFzZSA1CmxvZygxMCwxMCkgIyBMb2cgb2YgMTAsIEJhc2UgMTAgCmxvZygxMDAsNCkgIyBMb2cgb2YgMTAwLCBCYXNlIDQKYGBgCgpgYGB7cn0KI0JhdHRpbmcgQXZlcmFnZT0oTm8uIG9mIEhpdHMpLyhOby4gb2YgQXQgQmF0cykKI1doYXQgaXMgdGhlIGJhdHRpbmcgYXZlcmFnZSBvZiBhIHBsYXllciB0aGF0IGJhdHMgMjkgaGl0cyBpbiAxMTIgYXQgYmF0cz8KQkE9MTI5LzQxMgpCQQojQWx0ZXJuYXRpdmUgU29sdXRpb24KTl9IaXRzPTEyOQpBdF9CYXRzPTQxMgpCQTwtTl9IaXRzL0F0X0JhdHMKQkEKQmF0dGluZ19BdmVyYWdlPXJvdW5kKEJBLGRpZ2l0cyA9IDMpCkJhdHRpbmdfQXZlcmFnZQpgYGAKCioqUXVlc3Rpb25fMjpXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/KioKCmBgYHtyfQojQW5zd2VycwpOX0hpdHM9NDIKQXRfQmF0czE9MjEyCkJhdF9BdmVyYWdlPC1OX0hpdHMvQXRfQmF0czEKQmF0dGluZ0F2ZXJhZ2U9cm91bmQoQmF0dGluZ19BdmVyYWdlLGRpZ2l0cyA9IDMpCkJhdHRpbmdBdmVyYWdlCmBgYAoKYGBge3J9CiNPbiBCYXNlIFBlcmNlbnRhZ2UKI09CUD0oSCtCQitIQlApLyhBdCBCYXRzK0JCK0hCUCtTRikKI0xldCB1cyBjb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzCiNBQj01MTUsSD0xNzIsQkI9ODQsSEJQPTUsU0Y9NgpPQlA9KDE3Mis4NCs1KS8oNTE1Kzg0KzUrNikKT0JQCk9CUF9BZGo9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9CUF9BZGoKYGBgCgoKKipRdWVzdGlvbiAzOiBDb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzICoqCgpgYGB7cn0KI0FCPTU2NSxIPTE1NixCQj02NSxIQlA9MyxTRj03Ck9CUD0oMTU2KzY1KzMpLyg1NjUrNjUrMysxNTYrNykKT0JQX2FkPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQpPQlBfYWQKYGBgCgoqKk9mdGVuIHlvdSB3aWxsIHdhbnQgdG8gdGVzdCB3aGV0aGVyIHNvbWV0aGluZyBpcyBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzb21ldGhpbmcuKioKCmBgYHtyfQozPT04CjI9PTMKMT09MQozPj0xCjM+PTkKNzw9MTAKNzw9NgozIT00CmBgYAoKCioqT2Z0ZW4geW91IHdpbGwgd2FudCB0byB0ZXN0IHdoZXRoZXIgc29tZXRoaW5nIGlzIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNvbWV0aGluZy4qKgoKCmBgYHtyfQojIExvZ2ljYWwgRGlzanVuY3Rpb24gKG9yKQpGQUxTRSB8IEZBTFNFICMgRmFsc2UgT1IgRmFsc2UKYGBgCgoKCmBgYHtyfQpGQUxTRXxUUlVFCmBgYAoKCmBgYHtyfQpUUlVFICAmIEZBTFNFCmBgYAoKCmBgYHtyfQohVFJVRQpgYGAKCmBgYHtyfQohRkFMU0UKYGBgCgpgYGB7cn0KIyBDb21iaW5hdGlvbiBvZiBzdGF0ZW1lbnRzCjIgPCAzIHwgMSA9PSA1ICMgMjwzIGlzIFRydWUsIDE9PTUgaXMgRmFsc2UsIFRydWUgT1IgRmFsc2UgaXMgVHJ1ZQpgYGAKCgoKCgpgYGB7cn0KMjwxfDI9PTMKYGBgCgoKYGBge3J9CnRvdGFsX2Jhc2VzPC03KzQKdG90YWxfYmFzZXMqNApgYGAKCmBgYHtyfQpscygpCmBgYAoKYGBge3J9CnJtKHRvdGFsX2Jhc2VzKQpscygpCmBgYAoKCgoKKipWZWN0b3JzKioKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3M8LWMoMTIsMTUsMTAsMjAsMTApCnBpdGNoZXNfYnlfaW5uaW5ncwpgYGAKCgoKCmBgYHtyfQpzdHJpa2VzX2J5X2lubmluZ3MgPC0gYyg5LCAxMiwgNiwgMTQsIDkpCnN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCgpgYGB7cn0KcmVwKDIsNSkKYGBgCgoKYGBge3J9CnJlcCgzLDMpCmBgYAoKCmBgYHtyfQoxOjYKYGBgCgpgYGB7cn0KMjo3CmBgYAoKYGBge3J9CnNlcSgxLDEwLGJ5PTMpCmBgYAoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5ncytzdHJpa2VzX2J5X2lubmluZ3MjKyBvcGVyYXRvcgpgYGAKCmBgYHtyfQojQ29tcGFyZSB0d28gdmVjdG9ycyAKcGl0Y2hlc19ieV9pbm5pbmdzCnN0cmlrZXNfYnlfaW5uaW5ncwpwaXRjaGVzX2J5X2lubmluZ3M9PXN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCmBgYHtyfQpsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQptaW4ocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQptZWFuKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzWzFdCmBgYAoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncyldCmBgYAoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5nc1tjKDIsMyw0KV0KYGBgCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzCnBpdGNoZXNfYnlfaW5uaW5nc1tjKDE6MyldCmBgYAoKYGBge3J9CnBsYXllcl9wb3NpdGlvbnM8LWMoImNhdGNoZXIiLCJwaXRjaGVyIiwiaW5maWVsZGVycyIsIm91dGZpZWxkZXJzIikKcGxheWVyX3Bvc2l0aW9ucwpgYGAKCioqRGF0YSBGcmFtZXMqKgoKCmBgYHtyfQpkYXRhLmZyYW1lKGJvbnVzPWMoMiwzLDEpLGFjdGl2ZV9yb3N0ZXI9YygieWVzIiwiTm8iLCJZZXMiKSxzYWxhcnk9YygxLjUsMi41LDEpKQpgYGAKCgoKCioqVXNpbmcgVGFibGVzKioKYGBge3J9Cng8LWMoIlllcyIsIk5vIiwiTm8iLCJZZXMiLCJZZXMiKQp0YWJsZSh4KQpgYGAKCioqTnVtZXJpY2FsIG1lYXN1cmVzIGFuZCBjZW50ZXIgb2Ygc3ByZWFkKiogCgpgYGB7cn0KY2VvX3NhbGFyaWVzPC1jKDEyLC40LDIsNTAsOCwzLDEsNCwuMjUpCm1lYW4oY2VvX3NhbGFyaWVzKQpgYGAKCmBgYHtyfQp2YXIoY2VvX3NhbGFyaWVzKQpgYGAKCmBgYHtyfQpzZChjZW9fc2FsYXJpZXMpCmBgYAoKYGBge3J9Cm1lZGlhbihjZW9fc2FsYXJpZXMpCmBgYAoKYGBge3J9CmZpdmVudW0oY2VvX3NhbGFyaWVzKQojMTIsLjQsMiwxNSw4LDMsMSw0LC4yNQojLjI1LC40LDEsMiwzLDQsOCwxMiwxNQpgYGAKCgpgYGB7cn0KZ2V0TW9kZTwtZnVuY3Rpb24oeCkgewogIHV4PC11bmlxdWUoeCkKICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCx1eCkpKV0KfQpgYGAKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MKZ2V0TW9kZShwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5ncwpnZXRNb2RlKHN0cmlrZXNfYnlfaW5uaW5ncykKYGBgCgpgYGB7cn0KZ2FtZV9kYXk8LWMoIlNhdHVyZGF5IiwgIlNhdHVyZGF5IiwgIlN1bmRheSIsICJNb25kYXkiLCAiU2F0dXJkYXkiLCJUdWVzZGF5IiwgIlN1bmRheSIsICJGcmlkYXkiLCAiRnJpZGF5IiwgIk1vbmRheSIpCnRhYmxlKGdhbWVfZGF5KQpgYGAKCmBgYHtyfQpnZXRNb2RlKGdhbWVfZGF5KQpgYGAKCgoKCgoK