2-3
[1] -1
# Division
2/3
[1] 0.6666667
# Exponentiation
2^3
[1] 8
# Square root
sqrt(2)
[1] 1.414214
# Logarithms
log(2)
[1] 0.6931472
#log
log (10)
[1] 2.302585
log(2.72, base =2.72)
[1] 1
##Question_1: Compute the log base 5 of 10 and the log of 10.
log(10)
[1] 2.302585
log(100)
[1] 4.60517
log(10,base =5)
[1] 1.430677
#Computing some offensive metrics in Baseball
#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=(29)/(112)
BA
[1] 0.2589286
Batting_Average=round(BA,digits = 3)
Batting_Average
[1] 0.259
#Question_2:What is the batting average of a player that bats 42 hits
in 212 at bats?
BA=(42)/(212)
BA
[1] 0.1981132
Batting_Average=round(BA,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
On_Base_Percentage=round(OBP,digits = 3)
On_Base_Percentage
[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+7)
OBP
[1] 0.35
3 <= 8# Is 3 less than or equal to 8?
[1] TRUE
3>5
[1] FALSE
3==5
[1] FALSE
!FALSE #no false is true
[1] TRUE
!TRUE # no true is false
[1] FALSE
2<3| 1==5 # 2<3 is true , 1==5 is false , true or false is true
[1] TRUE
2>3 | 2==3
[1] FALSE
2>1 & 3>=3
[1] TRUE
2>1 & 3<=3
[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
# Logical Conjunction (and)
TRUE & FALSE #True AND False
[1] FALSE
#Assigning Values to Variables
Total_Bases <- 6 + 5
Total_Bases*3
[1] 33
ls()
[1] "BA" "Batting_Average" "OBP"
[4] "OBS" "On_Base_Percentage" "Total_Bases"
To delete a variable, use rm (as in “remove”)
rm(Total_Bases)
#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
#Question_4: Define two vectors,runs_per_9innings and
hits_per_9innings, each with five elements.
runs_per_9innings<-c(2,5,7,11,13)
hits_per_9innings<-c(11,13,16,18,19)
runs_per_9innings
[1] 2 5 7 11 13
hits_per_9innings
[1] 11 13 16 18 19
2:4
[1] 2 3 4
#sequence
seq(1,20, by=3)
[1] 1 4 7 10 13 16 19
# add vectors
pitches_by_innings+strikes_by_innings
[1] 21 27 16 34 19
# compare vectors
pitches_by_innings == strikes_by_innings
[1] FALSE FALSE FALSE FALSE FALSE
#First
# If you want to get the first element:
pitches_by_innings[1]
#Last If you want to get the last element of pitches_by_innings
without explicitly typing the number of elements of pitches_by_innings,
make use of the length function, which calculates the length of a
vector:
pitches_by_innings[length(pitches_by_innings)]
#You can also extract multiple values from a vector. For instance to get the 2nd through 4th values use
pitches_by_innings[c(2, 3, 4)]
#Vectors can also be strings or logical values
player_positions <- c("catcher", "pitcher", "infielders", "outfielders")
Data Frames To manually create a data frame, use the
data.frame() function.
data.frame(bonus = c(2, 3, 1),#in millions
active_roster = c("yes", "no", "yes"),
salary = c(1.5, 2.5, 1))#in millions
#How to Make a Random Sample To randomly select a sample use the
function sample(). The following code selects 5 numbers between 1 and 10
at random (without duplication)
sample(1:10, size=5)
[1] 5 6 4 2 3
The first argument gives the vector of data to select elements from.
The second argument (size=) gives the size of the sample to select.
Taking a simple random sample from a data frame is only slightly more
complicated, having two steps:
Use sample() to select a sample of size n from a vector of the row
numbers of the data frame. Use the index operator [ to select those rows
from the data frame. Consider the following example with fake data.
First, make up a data frame with two columns. (LETTERS is a character
vector of length 26 with capital letters âAâ to âZâ; LETTERS is
automatically defined and pre-loaded in R)
x <- c("Yes","No","No","Yes","Yes")
table(x)
x
No Yes
2 3
sals <- c(12, .4, 5, 2, 50, 8, 3, 1, 4, 0.25)
# the average
mean(sals)
[1] 8.565
var(sals)
[1] 225.5145
sd(sals)
[1] 15.01714
median(sals)
[1] 3.5
# Tukey's five number summary, usefull for boxplots
# five numbers: min, lower hinge, median, upper hinge, max
fivenum(sals)
[1] 0.25 1.00 3.50 8.00 50.00
# summary statistics
summary(sals)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.250 1.250 3.500 8.565 7.250 50.000
# Function to find the mode, i.e. most frequent value
getMode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
# Most frequent value in pitches_by_innings
getMode(pitches_by_innings)
[1] 10
#Question_7: Find the most frequent value of hits_per_9innings.
getMode(pitches_by_innings)
[1] 10
getMode(hits_per_9innings)
[1] 11
#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”)
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
#Question_9: What is the most frequent answer recorded in the survey?
Use the getMode function to compute results.
getMode(game_day)
[1] "Saturday"
LS0tCnRpdGxlOiAiQWN0aXZpdHkjNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CiMgQWRkaXRpb24KMi0zCmBgYAoKYGBge3J9CiMgRGl2aXNpb24KMi8zCmBgYAoKCmBgYHtyfQojIEV4cG9uZW50aWF0aW9uCjJeMyAKYGBgCgpgYGB7cn0KIyBTcXVhcmUgcm9vdApzcXJ0KDIpCmBgYAoKYGBge3J9CiMgTG9nYXJpdGhtcwpsb2coMikKYGBgCgpgYGB7cn0KI2xvZyAKbG9nICgxMCkKbG9nKDIuNzIsIGJhc2UgPTIuNzIpCmBgYAoKCiMjUXVlc3Rpb25fMTogQ29tcHV0ZSB0aGUgbG9nIGJhc2UgNSBvZiAxMCBhbmQgdGhlIGxvZyBvZiAxMC4KCmBgYHtyfQpsb2coMTApCmxvZygxMDApCmxvZygxMCxiYXNlID01KQpgYGAKCiNDb21wdXRpbmcgc29tZSBvZmZlbnNpdmUgbWV0cmljcyBpbiBCYXNlYmFsbAoKI0JhdHRpbmcgQXZlcmFnZT0oTm8uIG9mIEhpdHMpLyhOby4gb2YgQXQgQmF0cykKI1doYXQgaXMgdGhlIGJhdHRpbmcgYXZlcmFnZSBvZiBhIHBsYXllciB0aGF0IGJhdHMgMjkgaGl0cyBpbiAxMTIgYXQgYmF0cz8KYGBge3J9CkJBPSgyOSkvKDExMikKQkEKYGBgCgoKYGBge3J9CkJhdHRpbmdfQXZlcmFnZT1yb3VuZChCQSxkaWdpdHMgPSAzKQpCYXR0aW5nX0F2ZXJhZ2UKYGBgCgoKI1F1ZXN0aW9uXzI6V2hhdCBpcyB0aGUgYmF0dGluZyBhdmVyYWdlIG9mIGEgcGxheWVyIHRoYXQgYmF0cyA0MiBoaXRzIGluIDIxMiBhdCBiYXRzPwoKYGBge3J9CkJBPSg0MikvKDIxMikKQkEKQmF0dGluZ19BdmVyYWdlPXJvdW5kKEJBLGRpZ2l0cyA9IDMpCkJhdHRpbmdfQXZlcmFnZQpgYGAKCmBgYHtyfQojT24gQmFzZSBQZXJjZW50YWdlCiNPQlA9KEgrQkIrSEJQKS8oQXQgQmF0cytCQitIQlArU0YpCiNMZXQgdXMgY29tcHV0ZSB0aGUgT0JQIGZvciBhIHBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBzdGF0cwojQUI9NTE1LEg9MTcyLEJCPTg0LEhCUD01LFNGPTYKT0JQPSgxNzIrODQrNSkvKDUxNSs4NCs1KzYpCk9CUApgYGAKCmBgYHtyfQpPbl9CYXNlX1BlcmNlbnRhZ2U9cm91bmQoT0JQLGRpZ2l0cyA9IDMpCk9uX0Jhc2VfUGVyY2VudGFnZQpgYGAKCiNRdWVzdGlvbl8zOkNvbXB1dGUgdGhlIE9CUCBmb3IgYSBwbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RhdHM6CiNBQj01NjUsSD0xNTYsQkI9NjUsSEJQPTMsU0Y9NwoKYGBge3J9Ck9CUD0oMTU2KzY1KzMpLyg1NjUrNjUrMys3KQpPQlAKYGBgCgoKYGBge3J9CjMgPD0gOCMgSXMgMyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOD8KMz41CjM9PTUKIUZBTFNFICNubyBmYWxzZSAgaXMgdHJ1ZSAKIVRSVUUgIyBubyB0cnVlIGlzIGZhbHNlIApgYGAKCgpgYGB7cn0KMjwzfCAxPT01ICMgMjwzIGlzIHRydWUgLCAxPT01IGlzIGZhbHNlICwgdHJ1ZSBvciBmYWxzZSBpcyB0cnVlIAoyPjMgfCAyPT0zCjI+MSAmIDM+PTMKMj4xICYgMzw9MwpgYGAKI1RoZSBsb2dpY2FsIG9wZXJhdG9ycyBhcmUgJiBmb3IgbG9naWNhbCBBTkQsIHwgZm9yIGxvZ2ljYWwgT1IsIGFuZCAhIGZvciBOT1QuIFRoZXNlIGFyZSBzb21lIGV4YW1wbGVzOgoKYGBge3J9CiMgTG9naWNhbCBEaXNqdW5jdGlvbiAob3IpCkZBTFNFIHwgRkFMU0UgIyBGYWxzZSBPUiBGYWxzZQpgYGAKCgpgYGB7cn0KIyBMb2dpY2FsIENvbmp1bmN0aW9uIChhbmQpClRSVUUgJiBGQUxTRSAjVHJ1ZSBBTkQgRmFsc2UKYGBgCgojQXNzaWduaW5nIFZhbHVlcyB0byBWYXJpYWJsZXMKYGBge3J9ClRvdGFsX0Jhc2VzIDwtIDYgKyA1ClRvdGFsX0Jhc2VzKjMKYGBgCgpgYGB7cn0KbHMoKQpgYGAKClRvIGRlbGV0ZSBhIHZhcmlhYmxlLCB1c2Ugcm0gKGFzIGluIOKAnHJlbW92ZeKAnSkKCnJtKFRvdGFsX0Jhc2VzKQoKCiNWZWN0b3JzCgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzIDwtIGMoMTIsIDE1LCAxMCwgMjAsIDEwKSAKcGl0Y2hlc19ieV9pbm5pbmdzCmBgYAoKCgpgYGB7cn0Kc3RyaWtlc19ieV9pbm5pbmdzIDwtIGMoOSwgMTIsIDYsIDE0LCA5KQpzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgojUXVlc3Rpb25fNDogRGVmaW5lIHR3byB2ZWN0b3JzLHJ1bnNfcGVyXzlpbm5pbmdzIGFuZCBoaXRzX3Blcl85aW5uaW5ncywgZWFjaCB3aXRoIGZpdmUgZWxlbWVudHMuIAoKYGBge3J9CnJ1bnNfcGVyXzlpbm5pbmdzPC1jKDIsNSw3LDExLDEzKQpoaXRzX3Blcl85aW5uaW5nczwtYygxMSwxMywxNiwxOCwxOSkKcnVuc19wZXJfOWlubmluZ3MKaGl0c19wZXJfOWlubmluZ3MKYGBgCgpgYGB7cn0KMjo0CmBgYAoKCmBgYHtyfQojc2VxdWVuY2UgCnNlcSgxLDIwLCBieT0zKQpgYGAKCmBgYHtyfQojIGFkZCB2ZWN0b3JzCnBpdGNoZXNfYnlfaW5uaW5ncytzdHJpa2VzX2J5X2lubmluZ3MKYGBgCgoKCmBgYHtyfQojIGNvbXBhcmUgdmVjdG9ycwpwaXRjaGVzX2J5X2lubmluZ3MgPT0gc3RyaWtlc19ieV9pbm5pbmdzCmBgYAoKI0ZpcnN0CmBgYHtyfQojIElmIHlvdSB3YW50IHRvIGdldCB0aGUgZmlyc3QgZWxlbWVudDoKcGl0Y2hlc19ieV9pbm5pbmdzWzFdCmBgYAoKCiNMYXN0CklmIHlvdSB3YW50IHRvIGdldCB0aGUgbGFzdCBlbGVtZW50IG9mIHBpdGNoZXNfYnlfaW5uaW5ncyB3aXRob3V0IGV4cGxpY2l0bHkgdHlwaW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgcGl0Y2hlc19ieV9pbm5pbmdzLCBtYWtlIHVzZSBvZiB0aGUgbGVuZ3RoIGZ1bmN0aW9uLCB3aGljaCBjYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSB2ZWN0b3I6CgpgYGB7cn0KcGl0Y2hlc19ieV9pbm5pbmdzW2xlbmd0aChwaXRjaGVzX2J5X2lubmluZ3MpXQpgYGAKCmBgYHtyfQojWW91IGNhbiBhbHNvIGV4dHJhY3QgbXVsdGlwbGUgdmFsdWVzIGZyb20gYSB2ZWN0b3IuIEZvciBpbnN0YW5jZSB0byBnZXQgdGhlIDJuZCB0aHJvdWdoIDR0aCB2YWx1ZXMgdXNlCgpwaXRjaGVzX2J5X2lubmluZ3NbYygyLCAzLCA0KV0KYGBgCgoKYGBge3J9CiNWZWN0b3JzIGNhbiBhbHNvIGJlIHN0cmluZ3Mgb3IgbG9naWNhbCB2YWx1ZXMKCnBsYXllcl9wb3NpdGlvbnMgPC0gYygiY2F0Y2hlciIsICJwaXRjaGVyIiwgImluZmllbGRlcnMiLCAib3V0ZmllbGRlcnMiKQpgYGAKCgoqKkRhdGEgRnJhbWVzKioKVG8gbWFudWFsbHkgY3JlYXRlIGEgZGF0YSBmcmFtZSwgdXNlIHRoZSBkYXRhLmZyYW1lKCkgZnVuY3Rpb24uCgpgYGB7cn0KZGF0YS5mcmFtZShib251cyA9IGMoMiwgMywgMSksI2luIG1pbGxpb25zIAogICAgICAgICAgIGFjdGl2ZV9yb3N0ZXIgPSBjKCJ5ZXMiLCAibm8iLCAieWVzIiksIAogICAgICAgICAgIHNhbGFyeSA9IGMoMS41LCAyLjUsIDEpKSNpbiBtaWxsaW9ucyAKYGBgCgojSG93IHRvIE1ha2UgYSBSYW5kb20gU2FtcGxlClRvIHJhbmRvbWx5IHNlbGVjdCBhIHNhbXBsZSB1c2UgdGhlIGZ1bmN0aW9uIHNhbXBsZSgpLiBUaGUgZm9sbG93aW5nIGNvZGUgc2VsZWN0cyA1IG51bWJlcnMgYmV0d2VlbiAxIGFuZCAxMCBhdCByYW5kb20gKHdpdGhvdXQgZHVwbGljYXRpb24pCgpgYGB7cn0Kc2FtcGxlKDE6MTAsIHNpemU9NSkKYGBgCgpUaGUgZmlyc3QgYXJndW1lbnQgZ2l2ZXMgdGhlIHZlY3RvciBvZiBkYXRhIHRvIHNlbGVjdCBlbGVtZW50cyBmcm9tLgpUaGUgc2Vjb25kIGFyZ3VtZW50IChzaXplPSkgZ2l2ZXMgdGhlIHNpemUgb2YgdGhlIHNhbXBsZSB0byBzZWxlY3QuClRha2luZyBhIHNpbXBsZSByYW5kb20gc2FtcGxlIGZyb20gYSBkYXRhIGZyYW1lIGlzIG9ubHkgc2xpZ2h0bHkgbW9yZSBjb21wbGljYXRlZCwgaGF2aW5nIHR3byBzdGVwczoKClVzZSBzYW1wbGUoKSB0byBzZWxlY3QgYSBzYW1wbGUgb2Ygc2l6ZSBuIGZyb20gYSB2ZWN0b3Igb2YgdGhlIHJvdyBudW1iZXJzIG9mIHRoZSBkYXRhIGZyYW1lLgpVc2UgdGhlIGluZGV4IG9wZXJhdG9yIFsgdG8gc2VsZWN0IHRob3NlIHJvd3MgZnJvbSB0aGUgZGF0YSBmcmFtZS4KQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHdpdGggZmFrZSBkYXRhLiBGaXJzdCwgbWFrZSB1cCBhIGRhdGEgZnJhbWUgd2l0aCB0d28gY29sdW1ucy4gKExFVFRFUlMgaXMgYSBjaGFyYWN0ZXIgdmVjdG9yIG9mIGxlbmd0aCAyNiB3aXRoIGNhcGl0YWwgbGV0dGVycyDDosKAwpxBw6LCgMKdIHRvIMOiwoDCnFrDosKAwp07IExFVFRFUlMgaXMgYXV0b21hdGljYWxseSBkZWZpbmVkIGFuZCBwcmUtbG9hZGVkIGluIFIpCgoKYGBge3J9CnggPC0gYygiWWVzIiwiTm8iLCJObyIsIlllcyIsIlllcyIpIAp0YWJsZSh4KQpgYGAKCgpgYGB7cn0Kc2FscyA8LSBjKDEyLCAuNCwgNSwgMiwgNTAsIDgsIDMsIDEsIDQsIDAuMjUpCiMgdGhlIGF2ZXJhZ2UKbWVhbihzYWxzKSAKdmFyKHNhbHMpCnNkKHNhbHMpCm1lZGlhbihzYWxzKQpgYGAKCmBgYHtyfQojIFR1a2V5J3MgZml2ZSBudW1iZXIgc3VtbWFyeSwgdXNlZnVsbCBmb3IgYm94cGxvdHMKIyBmaXZlIG51bWJlcnM6IG1pbiwgbG93ZXIgaGluZ2UsIG1lZGlhbiwgdXBwZXIgaGluZ2UsIG1heApmaXZlbnVtKHNhbHMpCmBgYAoKYGBge3J9CiMgc3VtbWFyeSBzdGF0aXN0aWNzCnN1bW1hcnkoc2FscykKCmBgYAoKYGBge3J9CiMgRnVuY3Rpb24gdG8gZmluZCB0aGUgbW9kZSwgaS5lLiBtb3N0IGZyZXF1ZW50IHZhbHVlCmdldE1vZGUgPC0gZnVuY3Rpb24oeCkgewogICAgIHV4IDwtIHVuaXF1ZSh4KQogICAgIHV4W3doaWNoLm1heCh0YWJ1bGF0ZShtYXRjaCh4LCB1eCkpKV0KIH0KYGBgCgpgYGB7cn0KIyBNb3N0IGZyZXF1ZW50IHZhbHVlIGluIHBpdGNoZXNfYnlfaW5uaW5ncwpnZXRNb2RlKHBpdGNoZXNfYnlfaW5uaW5ncykKYGBgCgojUXVlc3Rpb25fNzogRmluZCB0aGUgbW9zdCBmcmVxdWVudCB2YWx1ZSBvZiBoaXRzX3Blcl85aW5uaW5ncy4KCmBgYHtyfQpnZXRNb2RlKHBpdGNoZXNfYnlfaW5uaW5ncykKZ2V0TW9kZShoaXRzX3Blcl85aW5uaW5ncykKYGBgCiNRdWVzdGlvbl84OiBTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBzdXJ2ZXkgd2l0aCB0aGUgYHRhYmxlKClgIGNvbW1hbmQ6CiNXaGF0IGlzIHlvdXIgZmF2b3JpdGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHdhdGNoIGJhc2ViYWxsPyBBIHRvdGFsIG9mIDEwIGZhbnMgc3VibWl0dGVkIHRoaXMgc3VydmV5LgojU2F0dXJkYXksIFNhdHVyZGF5LCBTdW5kYXksIE1vbmRheSwgU2F0dXJkYXksVHVlc2RheSwgU3VuZGF5LCBGcmlkYXksIEZyaWRheSwgTW9uZGF5CmdhbWVfZGF5PC1jKCJTYXR1cmRheSIsICJTYXR1cmRheSIsICJTdW5kYXkiLCAiTW9uZGF5IiwgIlNhdHVyZGF5IiwiVHVlc2RheSIsICJTdW5kYXkiLCAiRnJpZGF5IiwgIkZyaWRheSIsICJNb25kYXkiKQoKYGBge3J9CmdhbWVfZGF5PC1jKCJTYXR1cmRheSIsICJTYXR1cmRheSIsICJTdW5kYXkiLCAiTW9uZGF5IiwgIlNhdHVyZGF5IiwiVHVlc2RheSIsICJTdW5kYXkiLCAiRnJpZGF5IiwgIkZyaWRheSIsICJNb25kYXkiKQp0YWJsZShnYW1lX2RheSkKYGBgCgoKI1F1ZXN0aW9uXzk6IFdoYXQgaXMgdGhlIG1vc3QgZnJlcXVlbnQgYW5zd2VyIHJlY29yZGVkIGluIHRoZSBzdXJ2ZXk/IFVzZSB0aGUgZ2V0TW9kZSBmdW5jdGlvbiB0byBjb21wdXRlIHJlc3VsdHMuIAoKYGBge3J9CmdldE1vZGUoZ2FtZV9kYXkpCmBgYAoKCg==