intermediate R - Practice - 0 - conditionals-and-control-flow
# c()
#
# output type =
# highest type of the components in the hierarchy
# NULL
# < raw
# < logical
# < integer
# < double
# < complex
# < character
# < list
# < expression
#
# Pairlists
# are treated as lists,
# whereas non-vector components (such names and calls)
# are treated as one-element lists
# which cannot be unlisted
# even if recursive = TRUE.
#
my_class <- 66
previous_4 <- matrix(c(82, 89, 53, 70),nrow=1,ncol=4)
nms <- cbind (my_class, previous_4)
nms
## my_class
## [1,] 66 82 89 53 70
# give the columns the names year_1, up to year_5
# in this order
colnames(nms) <- paste0("year_", 1:5)
nms
## year_1 year_2 year_3 year_4 year_5
## [1,] 66 82 89 53 70
me <- 89
other_199 <- c(66, 81, 77, 90, 95, 54, 78, 90, 80, 71, 96, 70, 81, 71, 60, 91, 62, 54, 70, 96, 90, 82, 78, 100, 79, 84, 79, 73, 66, 63, 97, 91, 82, 81, 52, 73, 89, 70, 69, 60, 63, 78, 77, 73, 64, 62, 61, 72, 64, 87, 54, 80, 82, 61, 70, 69, 61, 88, 90, 74, 80, 59, 75, 65, 83, 70, 83, 83, 81, 80, 88, 77, 84, 50, 73, 70, 74, 75, 71, 60, 62, 80, 78, 81, 60, 80, 99, 90, 90, 66, 61, 79, 71, 80, 69, 67, 80, 59, 72, 76, 74, 70, 74, 96, 73, 90, 92, 75, 77, 63, 94, 67, 56, 95, 85, 63, 80, 96, 72, 77, 79, 69, 68, 70, 73, 99, 64, 59, 63, 82, 76, 90, 80, 86, 77, 80, 84, 80, 99, 80, 68, 77, 51, 67, 86, 60, 61, 57, 62, 86, 86, 75, 75, 62, 60, 75, 71, 70, 70, 70, 75, 72, 79, 74, 72, 78, 87, 70, 77, 64, 77, 67, 88, 87, 80, 76, 73, 78, 89, 72, 86, 68, 84, 64, 73, 73, 64, 70, 92, 91, 65, 69, 99, 76, 94, 72, 77, 80, 64)
my_class <- c(me, other_199)
previous_4 <- matrix(c(
82, 89, 53, 70, 66, 89, 66, 76, 66, 65, 85, 73, 86, 79, 65, 64, 76, 83, 75, 56, 74, 73, 69, 71, 56, 79, 98, 96, 80, 87, 66, 78, 71, 59, 100, 77, 69, 77, 76, 99, 69, 84, 70, 89, 72, 75, 89, 56, 68, 70, 60, 92, 63, 63, 52, 73, 83, 74, 80, 85, 55, 70, 84, 71, 87, 61, 95, 67, 79, 85, 68, 75, 75, 75, 92, 65, 100, 72, 78, 90, 61, 53, 55, 87, 70, 80, 69, 91, 66, 80, 64, 77, 90, 85, 95, 81, 85, 75, 71, 99, 56, 77, 55, 98, 73, 89, 80, 59, 72, 73, 70, 73, 81, 72, 63, 56, 86, 68, 80, 70, 60, 74, 73, 97, 88, 85, 93, 50, 77, 81, 62, 71, 80, 76, 80, 75, 57, 90, 90, 95, 69, 66, 61, 89, 73, 87, 64, 88, 61, 61, 75, 93, 50, 73, 92, 88, 67, 60, 100, 74, 98, 68, 76, 61, 80, 70, 85, 96, 82, 84, 97, 97, 69, 90, 67, 82, 89, 68, 72, 64, 74, 74, 60, 85, 89, 88, 89, 71, 73, 93, 91, 87, 67, 66, 60, 51, 67, 79, 73, 68, 90, 83, 87, 65, 68, 77, 92, 79, 64, 78, 71, 96, 85, 66, 72, 99, 70, 56, 82, 94, 78, 66, 90, 80, 96, 77, 63, 71, 69, 99, 70, 94, 74, 91, 56, 64, 71, 67, 75, 59, 55, 63, 79, 86, 62, 87, 62, 70, 56, 78, 98, 55, 83, 70, 63, 87, 65, 68, 88, 75, 76, 84, 66, 83, 83, 70, 58, 72, 77, 65, 73, 69, 78, 85, 67, 63, 52, 70, 80, 80, 75, 99, 69, 85, 55, 60, 52, 67, 50, 100, 77, 60, 58, 77, 60, 70, 68, 92, 70, 82, 94, 82, 76, 82, 90, 79, 84, 90, 67, 89, 98, 51, 70, 50, 62, 92, 58, 64, 70, 86, 80, 87, 79, 85, 93, 63, 90, 62, 65, 99, 88, 90, 73, 73, 60, 90, 64, 85, 67, 68, 56, 82, 75, 98, 73, 62, 80, 93, 57, 64, 77, 80, 65, 84, 69, 75, 56, 77, 72, 70, 83, 71, 68, 66, 72, 87, 54, 87, 61, 58, 90, 100, 58, 70, 79, 90, 56, 87, 65, 85, 92, 60, 71, 76, 99, 90, 83, 100, 68, 68, 68, 52, 61, 55, 60, 75, 60, 85, 77, 56, 97, 96, 79, 74, 96, 79, 62, 91, 51, 80, 69, 84, 95, 71, 52, 81, 90, 59, 64, 89, 89, 80, 77, 89, 72, 70, 89, 80, 67, 79, 80, 70, 50, 75, 71, 88, 80, 84, 60, 77, 74, 77, 77, 59, 72, 70, 89, 50, 70, 59, 77, 56, 88, 74, 82, 83, 56, 73, 90, 88, 79, 90, 73, 77, 98, 69, 72, 95, 51, 80, 50, 90, 66, 94, 50, 83, 79, 57, 80, 75, 53, 99, 61, 78, 53, 73, 76, 76, 72, 80, 89, 55, 66, 74, 91, 73, 87, 54, 65, 82, 61, 77, 86, 92, 54, 84, 92, 90, 70, 79, 62, 71, 54, 53, 87, 86, 77, 89, 97, 66, 60, 73, 52, 73, 88, 83, 76, 86, 71, 85, 65, 64, 90, 79, 80, 71, 51, 99, 71, 80, 74, 54, 69, 95, 74, 90, 74, 69, 86, 78, 98, 82, 90, 70, 79, 84, 80, 79, 75, 84, 68, 70, 50, 53, 75, 98, 80, 97, 63, 60, 66, 78, 78, 70, 55, 76, 65, 70, 85, 80, 73, 92, 75, 61, 70, 86, 78, 70, 69, 59, 97, 78, 72, 73, 58, 70, 65, 98, 86, 79, 88, 72, 74, 76, 65, 76, 70, 86, 67, 62, 67, 69, 76, 82, 68, 95, 68, 77, 58, 55, 88, 78, 80, 74, 69, 84, 73, 96, 83, 82, 74, 86, 76, 78, 67, 57, 75, 76, 54, 79, 51, 51, 62, 70, 66, 55, 76, 80, 61, 82, 66, 73, 58, 94, 83, 84, 73, 62, 72, 67, 80, 81, 82, 89, 96, 81, 66, 88, 61, 73, 66, 85, 52, 99, 75, 64, 74, 80, 84, 70, 72, 77, 81, 77, 76, 80, 70, 72, 78, 79, 99, 55, 54, 84, 84, 77, 80, 76, 98, 72, 79, 84, 64, 73, 66, 88, 68, 86, 94, 75, 76, 94, 63, 52, 74, 50, 74, 82, 90, 71, 67, 73, 99, 80, 84, 76, 69, 74, 93, 99, 100, 94, 70, 73, 51, 90, 94, 70, 81, 84, 79, 75, 99, 88, 60, 67, 70, 100, 60, 70, 62, 66, 70, 83, 52, 68, 60, 88, 70, 62, 63, 83, 70, 71, 68, 78, 73, 60, 72, 57, 80, 67, 90, 87, 64, 88, 96, 63, 73, 78, 61, 60, 98, 87, 66, 76, 74, 78, 70, 76, 61, 86, 61, 77, 70, 76, 63, 78, 80, 94
),ncol=4)
last_5 <- cbind (my_class, previous_4)
nms <- paste0("year_", 1:5)
colnames(last_5) <- nms
# Explore your data
# visualizations
# histogram
hist(my_class)

# which bin your grade (the variable me) is?
h <- hist(my_class, plot = FALSE)
bin <- cut(me, h$breaks)
clr <- rep("white", length(h$counts))
clr[bin] <- "red"
plot(h, col=clr)

# summaries
# Generate summary of last_5
summary(last_5)
## year_1 year_2 year_3 year_4
## Min. : 50.00 Min. : 50.0 Min. : 50.00 Min. :50.00
## 1st Qu.: 68.00 1st Qu.: 67.0 1st Qu.: 65.00 1st Qu.:69.00
## Median : 75.00 Median : 75.0 Median : 73.00 Median :76.00
## Mean : 75.52 Mean : 75.8 Mean : 74.57 Mean :75.34
## 3rd Qu.: 82.00 3rd Qu.: 85.0 3rd Qu.: 85.00 3rd Qu.:84.25
## Max. :100.00 Max. :100.0 Max. :100.00 Max. :99.00
## year_5
## Min. : 50.00
## 1st Qu.: 67.00
## Median : 75.00
## Mean : 75.00
## 3rd Qu.: 82.25
## Max. :100.00
# Build boxplot of last_5
boxplot(last_5)

# Basic queries
# relational operators:
# == - Equality
# != - Inequality
# > - Greater than
# < - Less than
# >= - Greater than or equal to
# <= - Less than or equal to
# The result of your queries should be a vector or a matrix of logicals.
# Is your grade equal to 72?
me == 72
## [1] FALSE
# Which grades in your class are higher than 75?
my_class > 75
## [1] TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE
## [12] TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
## [23] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE
## [34] TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
## [45] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE
## [56] FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE
## [67] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
## [78] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE
## [89] TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
## [100] FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
## [111] FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE
## [122] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
## [133] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
## [144] FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
## [155] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## [166] FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
## [177] TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
## [188] FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE
## [199] TRUE FALSE
# Which grades in the last 5 years are below or equal to 64?
last_5 <= 64
## year_1 year_2 year_3 year_4 year_5
## [1,] FALSE FALSE FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE FALSE FALSE
## [3,] FALSE TRUE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE FALSE FALSE
## [7,] TRUE FALSE FALSE TRUE FALSE
## [8,] FALSE FALSE FALSE FALSE FALSE
## [9,] FALSE FALSE TRUE TRUE FALSE
## [10,] FALSE FALSE FALSE FALSE TRUE
## [11,] FALSE FALSE FALSE FALSE FALSE
## [12,] FALSE FALSE FALSE FALSE FALSE
## [13,] FALSE FALSE FALSE FALSE FALSE
## [14,] FALSE FALSE FALSE FALSE FALSE
## [15,] FALSE FALSE FALSE TRUE FALSE
## [16,] TRUE TRUE FALSE FALSE FALSE
## [17,] FALSE FALSE FALSE FALSE FALSE
## [18,] TRUE FALSE TRUE TRUE FALSE
## [19,] TRUE FALSE FALSE TRUE TRUE
## [20,] FALSE TRUE FALSE FALSE TRUE
## [21,] FALSE FALSE FALSE FALSE FALSE
## [22,] FALSE FALSE FALSE FALSE FALSE
## [23,] FALSE FALSE FALSE FALSE FALSE
## [24,] FALSE FALSE FALSE FALSE FALSE
## [25,] FALSE TRUE FALSE FALSE FALSE
## [26,] FALSE FALSE FALSE FALSE FALSE
## [27,] FALSE FALSE TRUE FALSE FALSE
## [28,] FALSE FALSE FALSE FALSE FALSE
## [29,] FALSE FALSE FALSE FALSE FALSE
## [30,] FALSE FALSE FALSE FALSE FALSE
## [31,] TRUE FALSE FALSE FALSE FALSE
## [32,] FALSE FALSE FALSE FALSE FALSE
## [33,] FALSE FALSE FALSE TRUE FALSE
## [34,] FALSE TRUE FALSE FALSE FALSE
## [35,] FALSE FALSE TRUE FALSE FALSE
## [36,] TRUE FALSE TRUE FALSE TRUE
## [37,] FALSE FALSE FALSE FALSE FALSE
## [38,] FALSE FALSE FALSE FALSE FALSE
## [39,] FALSE FALSE FALSE TRUE TRUE
## [40,] FALSE FALSE TRUE FALSE FALSE
## [41,] TRUE FALSE TRUE FALSE TRUE
## [42,] TRUE FALSE TRUE FALSE TRUE
## [43,] FALSE FALSE FALSE FALSE TRUE
## [44,] FALSE FALSE FALSE TRUE FALSE
## [45,] FALSE FALSE TRUE FALSE FALSE
## [46,] TRUE FALSE FALSE FALSE TRUE
## [47,] TRUE FALSE TRUE FALSE FALSE
## [48,] TRUE TRUE FALSE TRUE FALSE
## [49,] FALSE FALSE TRUE FALSE TRUE
## [50,] TRUE FALSE FALSE TRUE FALSE
## [51,] FALSE TRUE FALSE FALSE FALSE
## [52,] TRUE FALSE TRUE TRUE FALSE
## [53,] FALSE TRUE FALSE FALSE TRUE
## [54,] FALSE TRUE FALSE FALSE FALSE
## [55,] TRUE TRUE TRUE FALSE FALSE
## [56,] FALSE FALSE FALSE FALSE FALSE
## [57,] FALSE FALSE FALSE TRUE FALSE
## [58,] TRUE FALSE FALSE FALSE TRUE
## [59,] FALSE FALSE FALSE FALSE FALSE
## [60,] FALSE FALSE FALSE FALSE FALSE
## [61,] FALSE TRUE FALSE FALSE FALSE
## [62,] FALSE FALSE FALSE FALSE FALSE
## [63,] TRUE FALSE FALSE FALSE FALSE
## [64,] FALSE FALSE FALSE FALSE FALSE
## [65,] FALSE FALSE FALSE FALSE FALSE
## [66,] FALSE TRUE FALSE FALSE FALSE
## [67,] FALSE FALSE TRUE FALSE FALSE
## [68,] FALSE FALSE FALSE FALSE FALSE
## [69,] FALSE FALSE FALSE TRUE TRUE
## [70,] FALSE FALSE FALSE FALSE FALSE
## [71,] FALSE FALSE FALSE TRUE FALSE
## [72,] FALSE FALSE FALSE FALSE FALSE
## [73,] FALSE FALSE FALSE FALSE TRUE
## [74,] FALSE FALSE FALSE FALSE FALSE
## [75,] TRUE FALSE FALSE TRUE FALSE
## [76,] FALSE FALSE TRUE FALSE TRUE
## [77,] FALSE FALSE TRUE FALSE FALSE
## [78,] FALSE FALSE FALSE TRUE FALSE
## [79,] FALSE FALSE FALSE FALSE FALSE
## [80,] FALSE FALSE FALSE FALSE FALSE
## [81,] TRUE TRUE FALSE TRUE FALSE
## [82,] TRUE TRUE FALSE FALSE FALSE
## [83,] FALSE TRUE FALSE TRUE FALSE
## [84,] FALSE FALSE FALSE FALSE FALSE
## [85,] FALSE FALSE TRUE TRUE FALSE
## [86,] TRUE FALSE TRUE FALSE FALSE
## [87,] FALSE FALSE TRUE FALSE FALSE
## [88,] FALSE FALSE FALSE FALSE FALSE
## [89,] FALSE FALSE TRUE FALSE FALSE
## [90,] FALSE FALSE FALSE FALSE FALSE
## [91,] FALSE TRUE FALSE FALSE FALSE
## [92,] TRUE FALSE TRUE TRUE TRUE
## [93,] FALSE FALSE TRUE FALSE TRUE
## [94,] FALSE FALSE FALSE FALSE FALSE
## [95,] FALSE FALSE TRUE FALSE FALSE
## [96,] FALSE FALSE FALSE FALSE FALSE
## [97,] FALSE FALSE FALSE FALSE FALSE
## [98,] FALSE FALSE FALSE TRUE FALSE
## [99,] TRUE FALSE FALSE FALSE FALSE
## [100,] FALSE FALSE FALSE FALSE FALSE
## [101,] FALSE TRUE FALSE TRUE FALSE
## [102,] FALSE FALSE FALSE FALSE FALSE
## [103,] FALSE TRUE FALSE FALSE TRUE
## [104,] FALSE FALSE FALSE FALSE FALSE
## [105,] FALSE FALSE FALSE TRUE FALSE
## [106,] FALSE FALSE FALSE FALSE FALSE
## [107,] FALSE FALSE FALSE FALSE FALSE
## [108,] FALSE TRUE FALSE FALSE FALSE
## [109,] FALSE FALSE FALSE FALSE FALSE
## [110,] FALSE FALSE FALSE FALSE FALSE
## [111,] TRUE FALSE FALSE TRUE FALSE
## [112,] FALSE FALSE TRUE FALSE FALSE
## [113,] FALSE FALSE FALSE TRUE TRUE
## [114,] TRUE FALSE TRUE TRUE TRUE
## [115,] FALSE TRUE TRUE FALSE FALSE
## [116,] FALSE TRUE FALSE FALSE TRUE
## [117,] TRUE FALSE TRUE FALSE FALSE
## [118,] FALSE FALSE TRUE FALSE FALSE
## [119,] FALSE FALSE FALSE FALSE FALSE
## [120,] FALSE FALSE FALSE FALSE FALSE
## [121,] FALSE TRUE FALSE TRUE FALSE
## [122,] FALSE FALSE FALSE FALSE FALSE
## [123,] FALSE FALSE FALSE TRUE FALSE
## [124,] FALSE FALSE FALSE FALSE FALSE
## [125,] FALSE FALSE FALSE FALSE FALSE
## [126,] FALSE FALSE TRUE FALSE FALSE
## [127,] FALSE FALSE FALSE FALSE FALSE
## [128,] TRUE TRUE TRUE FALSE FALSE
## [129,] TRUE FALSE FALSE FALSE FALSE
## [130,] TRUE FALSE FALSE FALSE FALSE
## [131,] FALSE TRUE FALSE FALSE FALSE
## [132,] FALSE FALSE FALSE TRUE FALSE
## [133,] FALSE FALSE FALSE FALSE FALSE
## [134,] FALSE FALSE FALSE FALSE FALSE
## [135,] FALSE FALSE TRUE FALSE TRUE
## [136,] FALSE FALSE FALSE FALSE FALSE
## [137,] FALSE TRUE TRUE TRUE FALSE
## [138,] FALSE FALSE FALSE FALSE FALSE
## [139,] FALSE FALSE FALSE FALSE FALSE
## [140,] FALSE FALSE FALSE FALSE FALSE
## [141,] FALSE FALSE TRUE FALSE FALSE
## [142,] FALSE FALSE FALSE TRUE FALSE
## [143,] FALSE TRUE FALSE FALSE FALSE
## [144,] TRUE FALSE FALSE FALSE FALSE
## [145,] FALSE FALSE FALSE FALSE TRUE
## [146,] FALSE FALSE TRUE FALSE FALSE
## [147,] TRUE TRUE FALSE FALSE FALSE
## [148,] TRUE FALSE FALSE FALSE FALSE
## [149,] TRUE TRUE TRUE FALSE TRUE
## [150,] TRUE TRUE TRUE FALSE FALSE
## [151,] FALSE FALSE FALSE FALSE TRUE
## [152,] FALSE FALSE FALSE FALSE FALSE
## [153,] FALSE TRUE FALSE FALSE FALSE
## [154,] FALSE FALSE FALSE FALSE FALSE
## [155,] TRUE FALSE FALSE FALSE TRUE
## [156,] TRUE FALSE FALSE FALSE FALSE
## [157,] FALSE FALSE TRUE FALSE TRUE
## [158,] FALSE TRUE FALSE FALSE FALSE
## [159,] FALSE FALSE FALSE FALSE FALSE
## [160,] FALSE FALSE FALSE FALSE TRUE
## [161,] FALSE FALSE FALSE FALSE TRUE
## [162,] FALSE FALSE FALSE FALSE FALSE
## [163,] FALSE FALSE FALSE TRUE FALSE
## [164,] FALSE TRUE FALSE TRUE FALSE
## [165,] FALSE FALSE FALSE FALSE FALSE
## [166,] FALSE FALSE FALSE FALSE FALSE
## [167,] FALSE FALSE TRUE FALSE FALSE
## [168,] FALSE FALSE FALSE FALSE TRUE
## [169,] FALSE FALSE TRUE TRUE FALSE
## [170,] FALSE FALSE TRUE TRUE TRUE
## [171,] TRUE FALSE FALSE FALSE FALSE
## [172,] FALSE FALSE FALSE FALSE FALSE
## [173,] FALSE FALSE TRUE FALSE FALSE
## [174,] FALSE FALSE FALSE FALSE FALSE
## [175,] FALSE FALSE FALSE TRUE TRUE
## [176,] FALSE FALSE FALSE FALSE FALSE
## [177,] FALSE FALSE TRUE FALSE FALSE
## [178,] FALSE FALSE FALSE FALSE TRUE
## [179,] FALSE FALSE FALSE FALSE FALSE
## [180,] FALSE TRUE FALSE FALSE FALSE
## [181,] FALSE FALSE FALSE FALSE TRUE
## [182,] FALSE FALSE TRUE FALSE TRUE
## [183,] FALSE TRUE FALSE FALSE FALSE
## [184,] FALSE FALSE FALSE TRUE FALSE
## [185,] TRUE FALSE FALSE FALSE FALSE
## [186,] FALSE FALSE FALSE FALSE FALSE
## [187,] FALSE FALSE FALSE FALSE FALSE
## [188,] TRUE FALSE FALSE FALSE FALSE
## [189,] FALSE FALSE FALSE FALSE FALSE
## [190,] FALSE FALSE FALSE TRUE FALSE
## [191,] FALSE FALSE FALSE FALSE TRUE
## [192,] FALSE FALSE TRUE FALSE FALSE
## [193,] FALSE FALSE TRUE FALSE TRUE
## [194,] FALSE FALSE TRUE FALSE FALSE
## [195,] FALSE TRUE TRUE TRUE FALSE
## [196,] FALSE TRUE FALSE FALSE FALSE
## [197,] FALSE FALSE TRUE FALSE TRUE
## [198,] FALSE FALSE FALSE FALSE FALSE
## [199,] FALSE FALSE FALSE FALSE FALSE
## [200,] TRUE FALSE TRUE FALSE FALSE
# vector of logicals is NOT very insightful
# How many grades in your class are higher than 75?
sum(my_class > 75)
## [1] 98
# How many students in your class scored strictly higher than you?
sum(my_class > me)
## [1] 27
# What's the proportion of grades below or equal to 64 in the last 5 years?
sum(last_5<=64)/length(last_5)
## [1] 0.201
mean(last_5 <= 64)
## [1] 0.201
# Logical operator
# & - AND
# | - OR
# ! - NOT
# Is your grade greater than 87 and smaller than or equal to 89?
me > 87 & me <= 89
## [1] TRUE
# Which grades in your class are below 60 or above 90?
my_class < 60 | my_class > 90
## [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
## [12] TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
## [23] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
## [34] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [67] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
## [78] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [89] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [100] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
## [111] FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE
## [122] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [144] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## [155] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [166] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [177] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [188] FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
## [199] FALSE FALSE
# What's the proportion of grades in your class that is average?
# i.e. greater than or equal to 70 and lower than or equal to 85?
sum(my_class >= 70 & my_class <= 85) / length(my_class)
## [1] 0.515
mean(my_class >= 70 & my_class <= 85)
## [1] 0.515
# How many students in the last 5 years had a grade of 80 or 90?
sum(last_5 == 80 | last_5 == 90)
## [1] 86
n_smart <- sum(my_class>=80)
if (n_smart > 50) {
print("smart class")
} else {
print("rather average")
}
## [1] "smart class"
# proportion of students whose grade
# (stored in my_class)
# was lower than yours
prop_less <- mean(my_class < me)
if (prop_less > 0.9) {
print("you're among the best 10 percent")
} else if (prop_less > 0.8) {
print("you're among the best 20 percent")
} else {
print("need more analysis")
}
## [1] "you're among the best 20 percent"
# top-level if condition
# is executed
# if the average score of your class is strictly below 75.
if (mean(my_class) < 75) {
if (mean(my_class) > me) {
print("average year, but still smarter than me")
} else {
print("average year, but I'm not that bad")
}
} else {
if (mean(my_class) > me) {
print("smart year, even smarter than me")
} else {
print("smart year, but I am smarter")
}
}
## [1] "smart year, but I am smarter"
# Operations and controls expertise
# let's try blending everything together
top_grades <- my_class[my_class >= 85]
worst_grades <- my_class[my_class < 65]
# Write conditional statement
if (length(top_grades) > length(worst_grades)) {
print("top grades prevail")
}
## [1] "top grades prevail"
setwd("D:/DATA/python/R - notes/Data Scientist with R/3 - intermediate R - Practice")
# install.packages("readxl")
library(readxl)
logs <- read_excel("logs.xls")
logs <- read_excel("logs.xls", col_types = c("logical", "text", "text", "text"))
## Warning in read_fun(path = path, sheet_i = sheet, limits = limits, shim =
## shim, : Expecting logical in A2 / R2C1: got 'success'
View(logs)
# install.packages("dplyr")
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tibble)
library(stringr)
my.df <- dplyr::data_frame(
a = 0,
b.c = 1,
b.d = 2,
e.f = 3,
e.g.h = 4,
e.g.i = 5,
j = 6
)
my.list <- list(
a = 0,
b = list(
c = 1,
d = 2
),
e = list(
f = 3,
g = list(
h = 4,
i = 5
)
),
j = 6
)
f <- function(x){
temp_list <- list()
unik <- str_extract(names(x), '\\w*') %>% unique()
for (this_level in unik){
temp <- x %>% select(starts_with(this_level))
if(length(temp) == 1){
temp_list[[this_level]] <- temp[[1,1]]
} else {
names(temp) <- names(temp) %>% str_replace('\\w*\\.', '')
if(str_detect(names(temp), '\\.') %>% any){
temp_list[[this_level]] <- f(temp)
} else {
temp_list[[this_level]] <- as.list(temp)
}
}
}
return(temp_list)
}
my.df %>%
f %>%
identical(my.list)
## [1] TRUE