1+1
[1] 2
7-8
[1] -1
#Complex Numbers
(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
#Natural Log
log(2)
[1] 0.6931472
log(10)
[1] 2.302585
log(2.72)
[1] 1.000632
# Natural Log
log10(10)
[1] 1

Question 1: Compute the Log base 5 of 10 and the log of 10

# Answers: Question 1
#Log of 10, Base 5
log(10,5) 
[1] 1.430677
#Log of 10, Base 10
log(10,10)
[1] 1
#Log of 100, Base 4
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(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=88, 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
#Logical Disjunction (or)
FALSE | FALSE # False OR False
[1] FALSE
FALSE | TRUE # False OR True
[1] TRUE
TRUE & FALSE # True AND 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
rm(total_bases)
ls()
 [1] "At_Bats"            "At_Bats1"          
 [3] "BA"                 "Bat_Average"       
 [5] "Batting_Average"    "BattingAverage"    
 [7] "N_Hits"             "OBP"               
 [9] "OBP_ad"             "OBP_Adj"           
[11] "pitches_by_innings" "player_positions"  
[13] "strikes_by_innings"

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 
[1] 21 27 16 34 19
#addition operator
#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
[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,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
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
getMode(strikes_by_innings)
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"
LS0tDQp0aXRsZTogIkdldHRpbmcgU3RhcnRlZCB3aXRoIFIiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCg0KYGBge3J9DQoxKzENCg0KYGBgDQpgYGB7cn0NCjctOA0KYGBgDQpgYGB7cn0NCiNDb21wbGV4IE51bWJlcnMNCigyKzVpKSsoMy0xaSkNCmBgYA0KYGBge3J9DQo0LzINCmBgYA0KDQpgYGB7cn0NCjYvMTINCmBgYA0KDQpgYGB7cn0NCjJeMg0KMl41DQpgYGANCg0KYGBge3J9DQpzcXJ0KDI1KQ0Kc3FydCgxNikNCnNxcnQoMTQ0KQ0KYGBgDQoNCmBgYHtyfQ0KI05hdHVyYWwgTG9nDQpsb2coMikNCmBgYA0KDQpgYGB7cn0NCmxvZygxMCkNCmxvZygyLjcyKQ0KYGBgDQoNCmBgYHtyfQ0KIyBOYXR1cmFsIExvZw0KbG9nMTAoMTApDQpgYGANCg0KKipRdWVzdGlvbiAxOiBDb21wdXRlIHRoZSBMb2cgYmFzZSA1IG9mIDEwIGFuZCB0aGUgbG9nIG9mIDEwKioNCg0KYGBge3J9DQojIEFuc3dlcnM6IFF1ZXN0aW9uIDENCiNMb2cgb2YgMTAsIEJhc2UgNQ0KbG9nKDEwLDUpIA0KI0xvZyBvZiAxMCwgQmFzZSAxMA0KbG9nKDEwLDEwKQ0KI0xvZyBvZiAxMDAsIEJhc2UgNA0KbG9nKDEwMCw0KQ0KYGBgDQoNCg0KYGBge3J9DQojQmF0dGluZyBBdmVyYWdlPShOby4gb2YgSGl0cykvKE5vLiBvZiBBdCBCYXRzKQ0KI1doYXQgaXMgdGhlIGJhdHRpbmcgYXZlcmFnZSBvZiBhIHBsYXllciB0aGF0IGJhdHMgMjkgaGl0cyBpbiAxMTIgYXQgYmF0cz8NCkJBPSgxMjkpLyg0MTIpDQpCQQ0KI0FsdGVybmF0aXZlIFNvbHV0aW9uDQpOX0hpdHM9MTI5DQpBdF9CYXRzPTQxMg0KQkE8LU5fSGl0cy9BdF9CYXRzDQpCQQ0KQmF0dGluZ19BdmVyYWdlPXJvdW5kKEJBLGRpZ2l0cyA9IDMpDQpCYXR0aW5nX0F2ZXJhZ2UNCmBgYA0KDQoNCioqUXVlc3Rpb24gMjogV2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyA0MiBoaXRzIGluIDIxMiBhdCBiYXRzPyoqDQoNCmBgYHtyfQ0KIyBBbnN3ZXJzDQpOX0hpdHM9NDINCkF0X0JhdHMxPTIxMg0KQmF0X0F2ZXJhZ2U8LU5fSGl0cy9BdF9CYXRzMQ0KQmF0dGluZ0F2ZXJhZ2U9cm91bmQoQmF0X0F2ZXJhZ2UsIGRpZ2l0cyA9IDMpDQpCYXR0aW5nQXZlcmFnZQ0KYGBgDQoNCmBgYHtyfQ0KI09uIEJhc2UgUGVyY2VudGFnZQ0KI09CUD0oSCtCQitIQlApLyhBdCBCYXRzK0JCK0hCUCtTRikNCiNMZXQgdXMgY29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0cw0KIyBBQj01MTUsIEg9MTcyLCBCQj04OCwgSEJQPTUsIFNGPTYNCk9CUD0oMTcyKzg0KzUpLyg1MTUrODQrNSs2KQ0KT0JQDQpPQlBfQWRqPXJvdW5kKE9CUCwgZGlnaXRzID0gMykNCk9CUF9BZGoNCmBgYA0KDQoNCioqUXVlc3Rpb25fMzogQ29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0czoqKg0KDQpgYGB7cn0NCiNBQj01NjUsIEg9MTU2LCBCQj02NSwgSEJQPTMsIFNGPTcNCk9CUD0oMTU2KzY1KzMpLyg1NjUrNjUrMysxNTYrNykNCk9CUF9hZD1yb3VuZChPQlAsIGRpZ2l0cyA9IDMpDQpPQlBfYWQNCmBgYA0KDQoNCioqT2Z0ZW4geW91IHdpbGwgd2FudCB0byB0ZXN0IHdoZXRoZXIgc29tZXRoaW5nIGlzIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuLCBvciBlcXVhbCB0byBzb21ldGhpbmcuKioNCg0KYGBge3J9DQozPT04DQoyPT0zDQoxPT0xDQozPj0xDQozPj05DQo3PD0xMA0KNzw9Ng0KMyE9NA0KYGBgDQoNCmBgYHtyfQ0KI0xvZ2ljYWwgRGlzanVuY3Rpb24gKG9yKQ0KRkFMU0UgfCBGQUxTRSAjIEZhbHNlIE9SIEZhbHNlDQpgYGANCg0KYGBge3J9DQpGQUxTRSB8IFRSVUUgIyBGYWxzZSBPUiBUcnVlDQpgYGANCg0KYGBge3J9DQpUUlVFICYgRkFMU0UgIyBUcnVlIEFORCBGYWxzZQ0KYGBgDQoNCmBgYHtyfQ0KIVRSVUUNCmBgYA0KDQoNCmBgYHtyfQ0KIUZBTFNFDQpgYGANCg0KYGBge3J9DQojIENvbWJpbmF0aW9uIG9mIHN0YXRlbWVudHMNCjIgPCAzIHwgMSA9PSA1ICMgMjwzIGlzIFRydWUsIDE9PTUgaXMgRmFsc2UsIFRydWUgT1IgRmFsc2UgaXMgVHJ1ZQ0KYGBgDQoNCg0KYGBge3J9DQoyPDF8Mj09Mw0KYGBgDQoNCmBgYHtyfQ0KdG90YWxfYmFzZXM8LTcrNA0KdG90YWxfYmFzZXMqNA0KYGBgDQoNCmBgYHtyfQ0Kcm0odG90YWxfYmFzZXMpDQpscygpDQpgYGANCg0KDQoqKlZlY3RvcnMqKg0KDQoNCmBgYHtyfQ0KcGl0Y2hlc19ieV9pbm5pbmdzPC1jKDEyLDE1LDEwLDIwLDEwKQ0KcGl0Y2hlc19ieV9pbm5pbmdzDQpgYGANCg0KDQoNCmBgYHtyfQ0Kc3RyaWtlc19ieV9pbm5pbmdzPC1jKDksMTIsNiwxNCw5KQ0Kc3RyaWtlc19ieV9pbm5pbmdzDQpgYGANCg0KDQpgYGB7cn0NCnJlcCgyLDUpDQpgYGANCg0KDQpgYGB7cn0NCnJlcCgzLDMpDQpgYGANCg0KDQpgYGB7cn0NCjE6Ng0KYGBgDQoNCg0KYGBge3J9DQoyOjcNCmBgYA0KDQoNCmBgYHtyfQ0Kc2VxKDEsMTAsYnk9MykNCmBgYA0KDQoNCmBgYHtyfQ0KcGl0Y2hlc19ieV9pbm5pbmdzK3N0cmlrZXNfYnlfaW5uaW5ncyANCiNhZGRpdGlvbiBvcGVyYXRvcg0KYGBgDQoNCg0KYGBge3J9DQojY29tcGFyZSB0d28gdmVjdG9ycw0KcGl0Y2hlc19ieV9pbm5pbmdzDQpzdHJpa2VzX2J5X2lubmluZ3MNCnBpdGNoZXNfYnlfaW5uaW5ncz09c3RyaWtlc19ieV9pbm5pbmdzDQpgYGANCg0KDQpgYGB7cn0NCmxlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpDQpgYGANCg0KDQpgYGB7cn0NCm1pbihwaXRjaGVzX2J5X2lubmluZ3MpDQpgYGANCg0KDQpgYGB7cn0NCm1lYW4ocGl0Y2hlc19ieV9pbm5pbmdzKQ0KYGBgDQoNCg0KYGBge3J9DQpwaXRjaGVzX2J5X2lubmluZ3NbMV0NCmBgYA0KDQoNCmBgYHtyfQ0KcGl0Y2hlc19ieV9pbm5pbmdzW2xlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpXQ0KYGBgDQoNCg0KYGBge3J9DQpwaXRjaGVzX2J5X2lubmluZ3MNCnBpdGNoZXNfYnlfaW5uaW5nc1tjKDE6MyldDQpgYGANCg0KDQpgYGB7cn0NCnBsYXllcl9wb3NpdGlvbnM8LWMoImNhdGNoZXIiLCAicGl0Y2hlciIsICJpbmZpZWxkZXJzIiwgIm91dGZpZWxkZXJzIikNCnBsYXllcl9wb3NpdGlvbnMNCmBgYA0KDQoNCioqRGF0YSBGcmFtZXMqKg0KDQpgYGB7cn0NCmRhdGEuZnJhbWUoYm9udXM9YygyLDMsMSksIGFjdGl2ZV9yb3N0ZXI9YygieWVzIiwgIm5vIiwgInllcyIpLCBzYWxhcnk9YygxLjUsIDIuNSwgMSkpDQpgYGANCg0KDQoqKlVzaW5nIFRhYmxlcyoqDQoNCmBgYHtyfQ0KeDwtYygiWWVzIiwgIk5vIiwiTm8iLCJZZXMiLCJZZXMiKQ0KdGFibGUoeCkNCmBgYA0KDQoNCioqTnVtZXJpY2FsIG1lYXN1cmVzIGFuZCBjZW50ZXIgb2Ygc3ByZWFkKioNCg0KDQpgYGB7cn0NCmNlb19zYWxhcmllczwtYygxMiwuNCwyLDE1LDgsMywxLDQsLjI1KQ0KbWVhbihjZW9fc2FsYXJpZXMpDQpgYGANCg0KDQpgYGB7cn0NCnZhcihjZW9fc2FsYXJpZXMpDQpgYGANCg0KDQpgYGB7cn0NCnNkKGNlb19zYWxhcmllcykNCmBgYA0KDQoNCmBgYHtyfQ0KbWVkaWFuKGNlb19zYWxhcmllcykNCmBgYA0KDQoNCmBgYHtyfQ0KZml2ZW51bShjZW9fc2FsYXJpZXMpDQojIDEyLC40LDIsMTUsOCwzLDEsNCwuMjUNCiMgLjI1LC40LDEsMiwzLDQsOCwxMiwxNQ0KYGBgDQoNCg0KYGBge3J9DQpnZXRNb2RlPC1mdW5jdGlvbih4KSB7DQogIHV4PC11bmlxdWUoeCkNCiAgdXhbd2hpY2gubWF4KHRhYnVsYXRlKG1hdGNoKHgsdXgpKSldDQp9DQpgYGANCg0KDQoNCmBgYHtyfQ0KcGl0Y2hlc19ieV9pbm5pbmdzDQpnZXRNb2RlKHBpdGNoZXNfYnlfaW5uaW5ncykNCmBgYA0KDQoNCmBgYHtyfQ0Kc3RyaWtlc19ieV9pbm5pbmdzDQpnZXRNb2RlKHN0cmlrZXNfYnlfaW5uaW5ncykNCmBgYA0KDQoNCmBgYHtyfQ0KZ2FtZV9kYXk8LWMoIlNhdHVyZGF5IiwiU2F0dXJkYXkiLCJTdW5kYXkiLCJNb25kYXkiLCJTYXR1cmRheSIsIlR1ZXNkYXkiLCJTdW5kYXkiLCJGcmlkYXkiLCJGcmlkYXkiLCJNb25kYXkiKQ0KdGFibGUoZ2FtZV9kYXkpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpnZXRNb2RlKGdhbWVfZGF5KQ0KDQpgYGANCg0K