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 of 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 129 hits in 412 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(Bat_Average,digits = 3)
BattingAverage
[1] 0.198

Question 3: Compute OBP for a player with the following general Stats: AB=565,H=156,BB=65,HBP=3,SF=7

#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
3 != 8
[1] TRUE
3 <= 8
[1] TRUE
3>4
[1] FALSE

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

# 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
2<1| 2==3
[1] FALSE
total_bases<-7+4
total_bases*4
[1] 44
ls()
 [1] "At_bats"         "At_Bats"         "At_Bats1"       
 [4] "BA"              "Bat_Average"     "Batting_Average"
 [7] "BattingAverage"  "N_hits"          "N_Hits"         
[10] "OBP"             "OBP_ad"          "OBP_Adj"        
[13] "total_bases"    
rm(total_bases)
ls()
 [1] "At_bats"         "At_Bats"         "At_Bats1"       
 [4] "BA"              "Bat_Average"     "Batting_Average"
 [7] "BattingAverage"  "N_hits"          "N_Hits"         
[10] "OBP"             "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

#Question_4: Define two vectors,runs_per_9innings and hits_per_9innings, each with five elements.

runs_per_9innings <- c(1, 3, 2, 1, 4)
runs_per_9innings
[1] 1 3 2 1 4
hits_per_9innings <- c(2, 4, 6, 1, 2)
hits_per_9innings
[1] 2 4 6 1 2
# replicate function
rep(2, 5)
rep(3,3)
[1] 3 3 3
# consecutive numbers
1:5
[1] 1 2 3 4 5
2:10
[1]  2  3  4  5  6  7  8  9 10
# sequence from 1 to 10 with a step of 2
seq(1, 10, by=2)
[1] 1 3 5 7 9
seq(1,10,by=3)
[1]  1  4  7 10
seq(2,13,by=3)
[1]  2  5  8 11
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
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
hits_per_9innings[1]
[1] 2
pitches_by_innings[length(pitches_by_innings)]
[1] 10
hits_per_9innings[5]
[1] 2
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 a spread

ceo_salaries<-c(12,.4,2,15,8,3,1,4,.25)
mean(ceo_salaries)
[1] 5.072222
var(ceo_salaries)
[1] 28.95944
sd(ceo_salaries)
[1] 5.381398
median(ceo_salaries)
[1] 3
summary(ceo_salaries)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.250   1.000   3.000   5.072   8.000  15.000 
fivenum(ceo_salaries)
# 12,.4,2,15,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

#Question_7: Find the most frequent value of hits_per_9innings.

strikes_by_innings
[1]  9 12  6 14  9
getMode(strikes_by_innings)
[1] 9

#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")

table(game_day)
game_day
  Friday   Monday Saturday   Sunday  Tuesday 
       2        2        3        2        1 
getMode(game_day)
[1] "Saturday"
LS0tCnRpdGxlOiAiR2V0dGluZyBzdGFydGVkIHdpdGggUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KMSsxCmBgYAoKYGBge3J9CjctOApgYGAKCmBgYHtyfQojQ29tcGxleCBOdW1iZXJzIAooMis1aSkgKyAoMy0xaSkKYGBgCmBgYHtyfQo0LzIKYGBgCgpgYGB7cn0KNi8xMgpgYGAKCmBgYHtyfQoyXjIKMl41CmBgYAoKYGBge3J9CnNxcnQoMjUpCmBgYAoKYGBge3J9CnNxcnQoMTYpCnNxcnQoMTQ0KQpgYGAKCmBgYHtyfQpsb2coMikjTmF0dXJhbCBsb2cKYGBgCgpgYGB7cn0KbG9nKDEwKQpsb2coMi43MikKYGBgCgpgYGB7cn0KbG9nMTAoMTApCmBgYApRdWVzdGlvbiAxOgoqKkNvbXB1dGUgdGhlIGxvZyBiYXNlIG9mIDUgb2YgMTAgYW5kIHRoZSBsb2cgb2YgMTAuKioKYGBge3J9CiNBbnN3ZXJzOiBRdWVzdGlvbiAxCmxvZygxMCw1KSNsb2cgb2YgMTAgQmFzZSA1CmxvZygxMCwxMCkjbG9nIG9mIDEwIEJhc2UgMTAKbG9nKDEwMCw0KSNsb2cgb2YgMTAwIEJhc2UgNApgYGAKYGBge3J9CiNCYXR0aW5nIEF2ZXJhZ2U9KE5vLiBvZiBIaXRzKS8oTm8uIG9mIEF0IEJhdHMpCiNXaGF0IGlzIHRoZSBCYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDEyOSBoaXRzIGluIDQxMiBhdCBiYXRzPwoKQkE9KDEyOSkvKDQxMikKQkEKCiNBbHRlcm5hdGl2ZSBzb2x1dGlvbgpOX2hpdHM9MTI5CkF0X2JhdHM9NDEyCkJBPC1OX2hpdHMvQXRfYmF0cwpCQQpgYGAKYGBge3J9CkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCQSxkaWdpdHMgPSAzKQpCYXR0aW5nX0F2ZXJhZ2UKYGBgCgoKCioqUXVlc3Rpb24gMjogV2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyA0MiBoaXRzIGluIDIxMiBhdCBiYXRzPyoqCmBgYHtyfQojQW5zd2VycwpOX0hpdHM9NDIKQXRfQmF0czE9MjEyCkJhdF9BdmVyYWdlPC1OX0hpdHMvQXRfQmF0czEKQmF0dGluZ0F2ZXJhZ2U9cm91bmQoQmF0X0F2ZXJhZ2UsZGlnaXRzID0gMykKQmF0dGluZ0F2ZXJhZ2UKYGBgCgoqKlF1ZXN0aW9uIDM6IENvbXB1dGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBTdGF0czoqKgoqKkFCPTU2NSxIPTE1NixCQj02NSxIQlA9MyxTRj03KioKCmBgYHtyfQojT24gQmFzZSBQZXJjZW50YWdlCiNPQlA9KEgrQkIrSEJQKS8oQXQgQmF0cytCQitIQlArU0YpCiNMZXQgdXMgY29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0cwojQUI9NTE1LEg9MTcyLEJCPTg0LEhCUD01LFNGPTYKT0JQPSgxNzIrODQrNSkvKDUxNSs4NCs1KzYpCk9CUApPQlBfQWRqPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQpPQlBfQWRqCmBgYAoKKipRdWVzdGlvbl8zOkNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwKc3RhdHM6KioKYGBge3J9CiNBQj01NjUsSD0xNTYsQkI9NjUsSEJQPTMsU0Y9NwpPQlA9KDE1Nis2NSszKS8oNTY1KzY1KzMrMTU2KzcpCk9CUF9hZD1yb3VuZChPQlAsZGlnaXRzID0gMykKT0JQX2FkCmBgYAoqKk9mdGVuIHlvdSB3aWxsIHdhbnQgdG8gdGVzdCB3aGV0aGVyIHNvbWV0aGluZyBpcyBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzb21ldGhpbmcuKioKCmBgYHtyfQozPT04CjMgIT0gOAozIDw9IDgKMz40CgpgYGAKCioqVGhlIGxvZ2ljYWwgb3BlcmF0b3JzIGFyZSAmIGZvciBsb2dpY2FsIEFORCwgfCBmb3IgbG9naWNhbCBPUiwgYW5kICEgZm9yIE5PVC4gVGhlc2UgYXJlIHNvbWUgZXhhbXBsZXM6KioKYGBge3J9CiMgTG9naWNhbCBEaXNqdW5jdGlvbiAob3IpCkZBTFNFIHwgRkFMU0UgIyBGYWxzZSBPUiBGYWxzZQoKIyBMb2dpY2FsIENvbmp1bmN0aW9uIChhbmQpClRSVUUgJiBGQUxTRSAjVHJ1ZSBBTkQgRmFsc2UKCiMgTmVnYXRpb24KISBGQUxTRSAjIE5vdCBGYWxzZQoKIyBDb21iaW5hdGlvbiBvZiBzdGF0ZW1lbnRzCjIgPCAzIHwgMSA9PSA1ICMgMjwzIGlzIFRydWUsIDE9PTUgaXMgRmFsc2UsIFRydWUgT1IgRmFsc2UgaXMgVHJ1ZQoKYGBgCgoKYGBge3J9CjI8MXwgMj09MyAjIEZhbHNlIGJlY2F1c2UgYm90aCBzdGF0ZW1lbnRzIGFyZSBmYWxzZQpgYGAKCgoKYGBge3J9CnRvdGFsX2Jhc2VzPC03KzQKdG90YWxfYmFzZXMqNApgYGAKCgpgYGB7cn0KbHMoKQpgYGAKCgpgYGB7cn0Kcm0odG90YWxfYmFzZXMpCmxzKCkKYGBgCgoqKlZlY3RvcnMqKgoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3MgPC0gYygxMiwgMTUsIDEwLCAyMCwgMTApCnBpdGNoZXNfYnlfaW5uaW5ncwpgYGAKCgpgYGB7cn0Kc3RyaWtlc19ieV9pbm5pbmdzIDwtIGMoOSwgMTIsIDYsIDE0LCA5KQpzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgpgYGB7cn0KCmBgYAoKCioqI1F1ZXN0aW9uXzQ6IERlZmluZSB0d28gdmVjdG9ycyxydW5zX3Blcl85aW5uaW5ncyBhbmQgaGl0c19wZXJfOWlubmluZ3MsIGVhY2ggd2l0aCBmaXZlIGVsZW1lbnRzLioqIAoKCmBgYHtyfQpydW5zX3Blcl85aW5uaW5ncyA8LSBjKDEsIDMsIDIsIDEsICkKcnVuc19wZXJfOWlubmluZ3MKYGBgCmBgYHtyfQpoaXRzX3Blcl85aW5uaW5ncyA8LSBjKDIsIDQsIDYsIDEsIDIpCmhpdHNfcGVyXzlpbm5pbmdzCmBgYAoKCgpgYGB7cn0KIyByZXBsaWNhdGUgZnVuY3Rpb24KcmVwKDIsIDUpCmBgYAoKCmBgYHtyfQpyZXAoMywzKQpgYGAKCgpgYGB7cn0KIyBjb25zZWN1dGl2ZSBudW1iZXJzCjE6NQpgYGAKCmBgYHtyfQoyOjEwCgpgYGAKCgoKYGBge3J9CiMgc2VxdWVuY2UgZnJvbSAxIHRvIDEwIHdpdGggYSBzdGVwIG9mIDIKc2VxKDEsIDEwLCBieT0yKQpgYGAKCmBgYHtyfQpzZXEoMSwxMCxieT0zKQoKYGBgCgoKCmBgYHtyfQpzZXEoMiwxMyxieT0zKQpgYGAKCmBgYHtyfQojYWRkaW5nIHZlY3RvcnMgCnBpdGNoZXNfYnlfaW5uaW5ncytzdHJpa2VzX2J5X2lubmluZ3MjKwpgYGAKCgoKYGBge3J9CiNjb21wYXJlIHR3byB2ZWN0b3JzIApwaXRjaGVzX2J5X2lubmluZ3MKc3RyaWtlc19ieV9pbm5pbmdzCnBpdGNoZXNfYnlfaW5uaW5ncz09c3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKCgpgYGB7cn0KbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgoKYGBge3J9Cm1pbihwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKCmBgYHtyfQptZWFuKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgoKCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzWzFdCmBgYAoKYGBge3J9CmhpdHNfcGVyXzlpbm5pbmdzWzFdCmBgYAoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncyldCmBgYAoKYGBge3J9CmhpdHNfcGVyXzlpbm5pbmdzWzVdCmBgYAoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbYygyLDMsNCldCmBgYAoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5ncwpwaXRjaGVzX2J5X2lubmluZ3NbYygxOjMpXQpgYGAKCgpgYGB7cn0KcGxheWVyX3Bvc2l0aW9uczwtYygiY2F0Y2hlciIsInBpdGNoZXIiLCJpbmZpZWxkZXJzIiwib3V0ZmllbGRlcnMiKQpwbGF5ZXJfcG9zaXRpb25zCmBgYAoKCioqRGF0YSBGcmFtZXMqKgoKYGBge3J9CmRhdGEuZnJhbWUoYm9udXM9YygyLDMsMSksYWN0aXZlX3Jvc3Rlcj1jKCJ5ZXMiLCJObyIsIlllcyIpLHNhbGFyeT1jKDEuNSwyLjUsMSkpCmBgYAoKCioqVXNpbmcgVGFibGVzKiogCgpgYGB7cn0KeDwtYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpCnRhYmxlKHgpCmBgYAoKCgoqKk51bWVyaWNhbCBtZWFzdXJlcyBhbmQgY2VudGVyIG9mIGEgc3ByZWFkKioKCmBgYHtyfQpjZW9fc2FsYXJpZXM8LWMoMTIsLjQsMiwxNSw4LDMsMSw0LC4yNSkKbWVhbihjZW9fc2FsYXJpZXMpCmBgYAoKCgpgYGB7cn0KdmFyKGNlb19zYWxhcmllcykKYGBgCgoKYGBge3J9CnNkKGNlb19zYWxhcmllcykKYGBgCgoKCmBgYHtyfQptZWRpYW4oY2VvX3NhbGFyaWVzKQpgYGAKCgoKYGBge3J9CnN1bW1hcnkoY2VvX3NhbGFyaWVzKQpgYGAKCmBgYHtyfQpmaXZlbnVtKGNlb19zYWxhcmllcykKIyAxMiwuNCwyLDE1LDgsMywxLDQsLjI1CiMuMjUsLjQsMSwyICAgICwzICAgLDQsOCwxMiwxNQpgYGAKCmBgYHtyfQpnZXRNb2RlIDwtIGZ1bmN0aW9uKHgpIHsKICAgICB1eCA8LSB1bmlxdWUoeCkKICAgICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCwgdXgpKSldCiB9CmBgYAoKCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzCmdldE1vZGUocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKI1F1ZXN0aW9uXzc6IEZpbmQgdGhlIG1vc3QgZnJlcXVlbnQgdmFsdWUgb2YgaGl0c19wZXJfOWlubmluZ3MuCgoKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5ncwpnZXRNb2RlKHN0cmlrZXNfYnlfaW5uaW5ncykKYGBgCgojUXVlc3Rpb25fODogU3VtbWFyaXplIHRoZSBmb2xsb3dpbmcgc3VydmV5IHdpdGggdGhlIGB0YWJsZSgpYCBjb21tYW5kOgojV2hhdCBpcyB5b3VyIGZhdm9yaXRlIGRheSBvZiB0aGUgd2VlayB0byB3YXRjaCBiYXNlYmFsbD8gQSB0b3RhbCBvZiAxMCBmYW5zIHN1Ym1pdHRlZCB0aGlzIHN1cnZleS4KI1NhdHVyZGF5LCBTYXR1cmRheSwgU3VuZGF5LCBNb25kYXksIFNhdHVyZGF5LFR1ZXNkYXksIFN1bmRheSwgRnJpZGF5LCBGcmlkYXksIE1vbmRheQoKYGBge3J9CmdhbWVfZGF5PC1jKCJTYXR1cmRheSIsICJTYXR1cmRheSIsICJTdW5kYXkiLCAiTW9uZGF5IiwgIlNhdHVyZGF5IiwiVHVlc2RheSIsICJTdW5kYXkiLCAiRnJpZGF5IiwgIkZyaWRheSIsICJNb25kYXkiKQoKdGFibGUoZ2FtZV9kYXkpCmBgYAoKCmBgYHtyfQpnZXRNb2RlKGdhbWVfZGF5KQpgYGAKCg==