#Addition
2+2
[1] 4
#Subtraction
4-2
[1] 2
#Multiplication
9*6
[1] 54
#Division
25/5
[1] 5
25/2
[1] 12.5
#Exponentiation
2^2
[1] 4
5^3
[1] 125
#Square root
sqrt(25)
[1] 5
# Logarithms
log(2)
[1] 0.6931472

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

log10(5)
[1] 0.69897
log10(10)
[1] 1
log(10,5) #log of 10, base 5
[1] 1.430677
log(10,10) #log of 10, base 10
[1] 1
log(100,4) #log of 100, base 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
Batting_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

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
FALSE | TRUE
[1] TRUE
# Logical Conjunction (and)
TRUE & FALSE #True AND False
[1] FALSE
# Negation
! FALSE # Not False
[1] TRUE
! TRUE # Not True
[1] FALSE
# 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"                
 [4] "Batting_Average"    "BattingAverage"     "ceo_salaries"      
 [7] "hits_per_innings"   "N_Hits"             "OBP"               
[10] "OBP_ad"             "OBP_Adj"            "pitches_by_innings"
[13] "player_positions"   "runs_per_innings"   "strikes_by_innings"
[16] "total_bases"        "x"                 
rm(total_bases)
ls()
 [1] "At_Bats"            "At_Bats1"           "BA"                
 [4] "Batting_Average"    "BattingAverage"     "ceo_salaries"      
 [7] "hits_per_innings"   "N_Hits"             "OBP"               
[10] "OBP_ad"             "OBP_Adj"            "pitches_by_innings"
[13] "player_positions"   "runs_per_innings"   "strikes_by_innings"
[16] "x"                 

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_innings and hits_per_innings, each with five elements.

hits_per_innings <- c(3, 3, 1, 4, 1)
hits_per_innings
[1] 3 3 1 4 1
runs_per_innings <- c(1, 1, 0, 2, 0)
runs_per_innings
[1] 1 1 0 2 0
# replicate function
rep(2,5)
[1] 2 2 2 2 2
rep(3,3)
[1] 3 3 3
#consecutive 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 3
seq(1,10,by=3)
[1]  1  4  7 10
# sequence from 2 to 13 with a step of 3
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
mean(pitches_by_innings)
[1] 13.4
pitches_by_innings[1]
[1] 12
hits_per_innings[1]
[1] 3
pitches_by_innings[length(pitches_by_innings)]
[1] 10
hits_per_innings
[1] 3 3 1 4 1
hits_per_innings[length(hits_per_innings)]
[1] 1
pitches_by_innings
[1] 12 15 10 20 10
pitches_by_innings[c(1:3)]
[1] 12 15 10
hits_per_innings
[1] 3 3 1 4 1
hits_per_innings[c(1:4)]
[1] 3 3 1 4
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
fivenum(ceo_salaries)
[1]  0.25  1.00  3.00  8.00 15.00
# 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_innings & Find the most frequent value of strikes_per_innings..

hits_per_innings
[1] 3 3 1 4 1
getMode(hits_per_innings)
[1] 3
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:

game_day<-c("Saturday", "Saturday", "Sunday", "Monday", "Saturday", "Tuesday", "Sunday", "Friday", "Monday")
table(game_day)
game_day
  Friday   Monday Saturday   Sunday  Tuesday 
       1        2        3        2        1 
getMode(game_day)
[1] "Saturday"
LS0tCnRpdGxlOiAiR2V0dGluZyBTdGFydGVkIHdpdGggUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQojQWRkaXRpb24KMisyCmBgYAoKCmBgYHtyfQojU3VidHJhY3Rpb24KNC0yCmBgYAoKCmBgYHtyfQojTXVsdGlwbGljYXRpb24KOSo2CmBgYAoKCmBgYHtyfQojRGl2aXNpb24KMjUvNQoyNS8yCmBgYAoKCmBgYHtyfQojRXhwb25lbnRpYXRpb24KMl4yCjVeMwpgYGAKCgpgYGB7cn0KI1NxdWFyZSByb290CnNxcnQoMjUpCmBgYAoKCmBgYHtyfQojIExvZ2FyaXRobXMKbG9nKDIpCmBgYAoKCioqUXVlc3Rpb25fMTogQ29tcHV0ZSB0aGUgbG9nIGJhc2UgNSBvZiAxMCBhbmQgdGhlIGxvZyBvZiAxMCoqCgpgYGB7cn0KbG9nMTAoNSkKbG9nMTAoMTApCmBgYAoKCmBgYHtyfQpsb2coMTAsNSkgI2xvZyBvZiAxMCwgYmFzZSA1CmxvZygxMCwxMCkgI2xvZyBvZiAxMCwgYmFzZSAxMApsb2coMTAwLDQpICNsb2cgb2YgMTAwLCBiYXNlIDQKYGBgCgoKYGBge3J9CiNCYXR0aW5nIEF2ZXJhZ2U9KE5vLiBvZiBIaXRzKS8oTm8uIG9mIEF0IEJhdHMpCiNXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDEyOSBoaXRzIGluIDQxMiBhdCBiYXRzPwpCQT0xMjkvNDEyCkJBCiNBbHRlcm5hdGl2ZSBTb2x1dGlvbgpOX0hpdHM9MTI5CkF0X0JhdHM9NDEyCkJBPC1OX0hpdHMvQXRfQmF0cwpCQQpCYXR0aW5nX0F2ZXJhZ2U9cm91bmQoQkEsZGlnaXRzID0gMykKQmF0dGluZ19BdmVyYWdlCgpgYGAKCioqUXVlc3Rpb25fMjpXaGF0IGlzIHRoZSBiYXR0aW5nIGF2ZXJhZ2Ugb2YgYSBwbGF5ZXIgdGhhdCBiYXRzIDQyIGhpdHMgaW4gMjEyIGF0IGJhdHM/KioKCmBgYHtyfQojQW5zd2VycwpOX0hpdHM9NDIKQXRfQmF0czE9MjEyCkJhdHRpbmdfQXZlcmFnZTwtTl9IaXRzL0F0X0JhdHMxCkJhdHRpbmdBdmVyYWdlPXJvdW5kKEJhdHRpbmdfQXZlcmFnZSxkaWdpdHMgPSAzKQpCYXR0aW5nQXZlcmFnZQpgYGAKCgpgYGB7cn0KI09uIEJhc2UgUGVyY2VudGFnZQojT0JQPShIK0JCK0hCUCkvKEF0IEJhdHMrQkIrSEJQK1NGKQojTGV0IHVzIGNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RhdHMKI0FCPTUxNSxIPTE3MixCQj04NCxIQlA9NSxTRj02Ck9CUD0oMTcyKzg0KzUpLyg1MTUrODQrNSs2KQpPQlAKT0JQX0Fkaj1yb3VuZChPQlAsZGlnaXRzID0gMykKT0JQX0FkagpgYGAKCioqUXVlc3Rpb25fMzpDb21wdXRlIHRoZSBPQlAgZm9yIGEgcGxheWVyIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0YXRzOioqCgpgYGB7cn0KI0FCPTU2NSxIPTE1NixCQj02NSxIQlA9MyxTRj03Ck9CUD0oMTU2KzY1KzMpLyg1NjUrNjUrMysxNTYrNykKT0JQX2FkPXJvdW5kKE9CUCxkaWdpdHMgPSAzKQpPQlBfYWQKYGBgCgoKKipPZnRlbiB5b3Ugd2lsbCB3YW50IHRvIHRlc3Qgd2hldGhlciBzb21ldGhpbmcgaXMgbGVzcyB0aGFuLCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc29tZXRoaW5nLioqCgoKCmBgYHtyfQozPT04CjI9PTMKMT09MQozPj0xCjM+PTkKNzw9MTAKNzw9NgozIT00CmBgYAoKCioqVGhlIGxvZ2ljYWwgb3BlcmF0b3JzIGFyZSAmIGZvciBsb2dpY2FsIEFORCwgfCBmb3IgbG9naWNhbCBPUiwgYW5kICEgZm9yIE5PVC4gVGhlc2UgYXJlIHNvbWUgZXhhbXBsZXM6KioKCgpgYGB7cn0KIyBMb2dpY2FsIERpc2p1bmN0aW9uIChvcikKRkFMU0UgfCBGQUxTRSAjIEZhbHNlIE9SIEZhbHNlCmBgYAoKCmBgYHtyfQpGQUxTRSB8IFRSVUUKYGBgCgoKYGBge3J9CiMgTG9naWNhbCBDb25qdW5jdGlvbiAoYW5kKQpUUlVFICYgRkFMU0UgI1RydWUgQU5EIEZhbHNlCmBgYAoKCmBgYHtyfQojIE5lZ2F0aW9uCiEgRkFMU0UgIyBOb3QgRmFsc2UKISBUUlVFICMgTm90IFRydWUKYGBgCgoKYGBge3J9CiMgQ29tYmluYXRpb24gb2Ygc3RhdGVtZW50cwoyIDwgMyB8IDEgPT0gNSAjIDI8MyBpcyBUcnVlLCAxPT01IGlzIEZhbHNlLCBUcnVlIE9SIEZhbHNlIGlzIFRydWUKYGBgCgoKYGBge3J9CjI8MXwyPT0zCmBgYAoKCmBgYHtyfQp0b3RhbF9iYXNlcyA8LSA3ICsgNAp0b3RhbF9iYXNlcyo0CmBgYAoKCmBgYHtyfQpscygpCmBgYAoKCmBgYHtyfQpybSh0b3RhbF9iYXNlcykKbHMoKQpgYGAKCioqVmVjdG9ycyoqCgoKYGBge3J9CnBpdGNoZXNfYnlfaW5uaW5nczwtIGMoMTIsIDE1LCAxMCwgMjAsIDEwKQpwaXRjaGVzX2J5X2lubmluZ3MKYGBgCgoKYGBge3J9CnN0cmlrZXNfYnlfaW5uaW5ncyA8LSBjKDksIDEyLCA2LCAxNCwgOSkKc3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKCioqUXVlc3Rpb25fNDogRGVmaW5lIHR3byB2ZWN0b3JzLHJ1bnNfcGVyX2lubmluZ3MgYW5kIGhpdHNfcGVyX2lubmluZ3MsIGVhY2ggd2l0aCBmaXZlIGVsZW1lbnRzLioqCgpgYGB7cn0KaGl0c19wZXJfaW5uaW5ncyA8LSBjKDMsIDMsIDEsIDQsIDEpCmhpdHNfcGVyX2lubmluZ3MKCnJ1bnNfcGVyX2lubmluZ3MgPC0gYygxLCAxLCAwLCAyLCAwKQpydW5zX3Blcl9pbm5pbmdzCmBgYAoKCmBgYHtyfQojIHJlcGxpY2F0ZSBmdW5jdGlvbgpyZXAoMiw1KQpgYGAKCmBgYHtyfQpyZXAoMywzKQpgYGAKCgpgYGB7cn0KI2NvbnNlY3V0aXZlIG51bWJlcnMKMTo2IApgYGAKCgpgYGB7cn0KMjo3CmBgYAoKCmBgYHtyfQojIHNlcXVlbmNlIGZyb20gMSB0byAxMCB3aXRoIGEgc3RlcCBvZiAzCnNlcSgxLDEwLGJ5PTMpCmBgYAoKCmBgYHtyfQojIHNlcXVlbmNlIGZyb20gMiB0byAxMyB3aXRoIGEgc3RlcCBvZiAzCnNlcSgyLDEzLGJ5PTMpCmBgYAoKCmBgYHtyfQojYWRkaW5nIHZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncyAjICsgb3BlcmF0b3IKYGBgCgpgYGB7cn0KI2NvbXBhcmUgdHdvIHZlY3RvcnMKcGl0Y2hlc19ieV9pbm5pbmdzCnN0cmlrZXNfYnlfaW5uaW5ncwpwaXRjaGVzX2J5X2lubmluZ3M9PXN0cmlrZXNfYnlfaW5uaW5ncwpgYGAKCmBgYHtyfQpsZW5ndGgocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCmBgYHtyfQptaW4ocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCgpgYGB7cn0KbWVhbihwaXRjaGVzX2J5X2lubmluZ3MpCmBgYAoKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbMV0KYGBgCgpgYGB7cn0KaGl0c19wZXJfaW5uaW5nc1sxXQpgYGAKCmBgYHtyfQpwaXRjaGVzX2J5X2lubmluZ3NbbGVuZ3RoKHBpdGNoZXNfYnlfaW5uaW5ncyldCmBgYAoKCmBgYHtyfQpoaXRzX3Blcl9pbm5pbmdzCmhpdHNfcGVyX2lubmluZ3NbbGVuZ3RoKGhpdHNfcGVyX2lubmluZ3MpXQpgYGAKCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzCnBpdGNoZXNfYnlfaW5uaW5nc1tjKDE6MyldCmBgYApgYGB7cn0KaGl0c19wZXJfaW5uaW5ncwpoaXRzX3Blcl9pbm5pbmdzW2MoMTo0KV0KYGBgCgoKYGBge3J9CnBsYXllcl9wb3NpdGlvbnM8LWMoImNhdGNoZXIiLCAicGl0Y2hlciIsICJpbmZpZWxkZXJzIiwgIm91dGZpZWxkZXJzIikKcGxheWVyX3Bvc2l0aW9ucwpgYGAKCioqRGF0YSBGcmFtZXMqKgoKCmBgYHtyfQpkYXRhLmZyYW1lKGJvbnVzPWMoMiwzLDEpLCBhY3RpdmVfcm9zdGVyPWMoInllcyIsIk5vIiwiWWVzIiksc2FsYXJ5PWMoMS41LCAyLjUsIDEpKQpgYGAKCgoqKlVzaW5nIFRhYmxlcyoqCgpgYGB7cn0KeDwtYygiWWVzIiwgIk5vIiwgIk5vIiwgIlllcyIsICJZZXMiKQp0YWJsZSh4KQpgYGAKCioqTnVtZXJpY2FsIG1lYXN1cmVzIGFuZCBjZW50ZXIgb2YgYSBzcHJlYWQqKgoKCmBgYHtyfQpjZW9fc2FsYXJpZXM8LWMoMTIsIC40LCAyLCAxNSwgOCwgMywgMSwgNCwgLjI1KQptZWFuKGNlb19zYWxhcmllcykKYGBgCgoKYGBge3J9CnZhcihjZW9fc2FsYXJpZXMpCmBgYAoKCmBgYHtyfQpzZChjZW9fc2FsYXJpZXMpCmBgYAoKCmBgYHtyfQptZWRpYW4oY2VvX3NhbGFyaWVzKQpgYGAKCgpgYGB7cn0KZml2ZW51bShjZW9fc2FsYXJpZXMpCiMgMTIsIC40LCAyLCAxNSwgOCwgMywgMSwgNCwgLjI1CiMgLjI1LCAuNCwgMSwgMiwgMywgNCwgOCwgMTIsIDE1CmBgYAoKCmBgYHtyfQpnZXRNb2RlPC1mdW5jdGlvbih4KSB7CiAgdXg8LXVuaXF1ZSh4KQogIHV4W3doaWNoLm1heCh0YWJ1bGF0ZShtYXRjaCh4LCB1eCkpKV0KfQpgYGAKCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzCmdldE1vZGUocGl0Y2hlc19ieV9pbm5pbmdzKQpgYGAKCgoqKiNRdWVzdGlvbl83OiBGaW5kIHRoZSBtb3N0IGZyZXF1ZW50IHZhbHVlIG9mIGhpdHNfcGVyX2lubmluZ3MgJiBGaW5kIHRoZSBtb3N0IGZyZXF1ZW50IHZhbHVlIG9mIHN0cmlrZXNfcGVyX2lubmluZ3MuLioqCgpgYGB7cn0KaGl0c19wZXJfaW5uaW5ncwpnZXRNb2RlKGhpdHNfcGVyX2lubmluZ3MpCmBgYApgYGB7cn0Kc3RyaWtlc19ieV9pbm5pbmdzCmdldE1vZGUoc3RyaWtlc19ieV9pbm5pbmdzKQpgYGAKCgoqKiNRdWVzdGlvbl84OiBTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBzdXJ2ZXkgd2l0aCB0aGUgYHRhYmxlKClgIGNvbW1hbmQ6KioKCmBgYHtyfQpnYW1lX2RheTwtYygiU2F0dXJkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5IiwgIk1vbmRheSIsICJTYXR1cmRheSIsICJUdWVzZGF5IiwgIlN1bmRheSIsICJGcmlkYXkiLCAiTW9uZGF5IikKdGFibGUoZ2FtZV9kYXkpCmBgYAoKCmBgYHtyfQpnZXRNb2RlKGdhbWVfZGF5KQpgYGAKCgoKCgoKCg==