## ---- message=FALSE, warning=FALSE, cache=FALSE--------
library(tidyverse)


## ---- echo=FALSE, cache=FALSE--------------------------
library(dslabs)
head(murders)


## ---- echo=FALSE---------------------------------------
tidy_data <- gapminder |> 
  filter(country %in% c("South Korea", "Germany") & !is.na(fertility)) |>
  select(country, year, fertility)
head(tidy_data, 6)


## ---- echo=FALSE, message=FALSE------------------------
path <- system.file("extdata", package = "dslabs")
filename <- file.path(path, "fertility-two-countries-example.csv")
wide_data <- read_csv(filename)
select(wide_data, country, `1960`:`1962`) |> as.data.frame()


## ---- message=FALSE------------------------------------
murders <- mutate(murders, rate = total/population*100000)


## ------------------------------------------------------
head(murders)


## ------------------------------------------------------
filter(murders, rate <= 0.71)


## ------------------------------------------------------
new_dataframe <- select(murders, state, region, rate)
filter(new_dataframe, rate <= 0.71)


## ------------------------------------------------------
new_dataframe <- select(murders, where(is.numeric))
names(new_dataframe)


## ------------------------------------------------------
new_dataframe <- select(murders, starts_with("r"))
names(new_dataframe)


## ------------------------------------------------------
## mutate(murders, population = log10(population))


## ------------------------------------------------------
## mutate(murders, across(c(population, total), log10))


## ------------------------------------------------------
## mutate(murders, across(where(is.numeric), log10))


## ------------------------------------------------------
## mutate(murders, across(where(is.character), tolower))


## ------------------------------------------------------
murders |> select(state, region, rate) |> filter(rate <= 0.71)


## ------------------------------------------------------
16 |> sqrt()


## ------------------------------------------------------
16 |> sqrt() |> log2()


## ------------------------------------------------------
16 |> sqrt() |> log(base = 2)


## ---- eval=FALSE---------------------------------------
murders |> select(state, region, rate) |> filter(rate <= 0.71)


## ---- message=FALSE, echo=FALSE------------------------
library(tidyverse)


## ------------------------------------------------------
library(dplyr)
library(dslabs)


## ------------------------------------------------------
s <- heights |> 
  filter(sex == "Female") |>
  summarize(average = mean(height), standard_deviation = sd(height))
s


## ------------------------------------------------------
s$average
s$standard_deviation


## ------------------------------------------------------
murders <- murders |> mutate(rate = total/population*100000)


## ------------------------------------------------------
murders |>
  summarize(rate = mean(rate))


## ------------------------------------------------------
us_murder_rate <- murders |>
  summarize(rate = sum(total)/sum(population)*100000)
us_murder_rate


## ------------------------------------------------------
heights |> summarize(median = median(height), min = min(height), max = max(height))


## ------------------------------------------------------
heights |> reframe(quantiles = quantile(height, c(0.5, 0, 1)))


## ------------------------------------------------------
median_min_max <- function(x){
  qs <- quantile(x, c(0.5, 0, 1))
  data.frame(median = qs[1], min = qs[2], max = qs[3])
}


## ------------------------------------------------------
heights |> summarize(median_min_max(height))


## ------------------------------------------------------
heights |> group_by(sex)


## ------------------------------------------------------
heights |> 
  group_by(sex) |>
  summarize(average = mean(height), standard_deviation = sd(height))


## ------------------------------------------------------
murders |> 
  group_by(region) |>
  summarize(median_min_max(rate))


## ------------------------------------------------------
class(us_murder_rate)


## ------------------------------------------------------
us_murder_rate <- murders |> 
  summarize(rate = sum(total)/sum(population)*100000) |>
  pull(rate)

us_murder_rate


## ------------------------------------------------------
class(us_murder_rate)


## ------------------------------------------------------
murders |> arrange(population) |> head()


## ---- eval=FALSE---------------------------------------
## murders |> arrange(desc(rate))


## ------------------------------------------------------
murders |> 
  arrange(region, rate) |> 
  head()


## ------------------------------------------------------
murders |> top_n(5, rate)


## ------------------------------------------------------
murders |> group_by(region)


## ------------------------------------------------------
murders |> group_by(region) |> class()


## ------------------------------------------------------
class(murders[,4])


## ------------------------------------------------------
class(as_tibble(murders)[,4])


## ------------------------------------------------------
class(as_tibble(murders)$population)


## ------------------------------------------------------
murders$Population


## ------------------------------------------------------
as_tibble(murders)$Population


## ------------------------------------------------------
tibble(id = c(1, 2, 3), func = c(mean, median, sd))


## ------------------------------------------------------
grades <- tibble(names = c("John", "Juan", "Jean", "Yao"), 
                     exam_1 = c(95, 80, 90, 85), 
                     exam_2 = c(90, 85, 85, 90))


## ------------------------------------------------------
grades <- data.frame(names = c("John", "Juan", "Jean", "Yao"), 
                     exam_1 = c(95, 80, 90, 85), 
                     exam_2 = c(90, 85, 85, 90))


## ------------------------------------------------------
as_tibble(grades) |> class()


## ---- eval=FALSE---------------------------------------
## log(8, base = 2)
## 2 |> log(8, base = _)
## 2 %>% log(8, base = .)


## ------------------------------------------------------
compute_s_n <- function(n) {
  sum(1:n)
}
n <- 1:25
s_n <- sapply(n, compute_s_n)


## ------------------------------------------------------
library(purrr)
s_n <- map(n, compute_s_n)
class(s_n)


## ------------------------------------------------------
s_n <- map_dbl(n, compute_s_n)
class(s_n)


## ---- eval=FALSE---------------------------------------
## s_n <- map_df(n, compute_s_n)


## ------------------------------------------------------
compute_s_n <- function(n) {
  tibble(sum = sum(1:n))
}
s_n <- map_df(n, compute_s_n)


## ------------------------------------------------------
x <- c(-2, -1, 0, 1, 2)
case_when(x < 0 ~ "Negative", 
          x > 0 ~ "Positive", 
          TRUE  ~ "Zero")


## ------------------------------------------------------
murders |> 
  mutate(group = case_when(
    abb %in% c("ME", "NH", "VT", "MA", "RI", "CT") ~ "New England",
    abb %in% c("WA", "OR", "CA") ~ "West Coast",
    region == "South" ~ "South",
    TRUE ~ "Other")) |>
  group_by(group) |>
  summarize(rate = sum(total)/sum(population)*10^5) 


## ---- eval=FALSE---------------------------------------
## x >= a & x <= b


## ---- eval = FALSE-------------------------------------
## between(x, a, b)


## ---- eval=FALSE---------------------------------------
## library(dplyr)
## library(dslabs)


## ---- eval=FALSE---------------------------------------
## murders <- mutate(murders, population_in_millions = population/10^6)


## ---- eval=FALSE---------------------------------------
## select(murders, state, population)


## ---- eval=FALSE---------------------------------------
## filter(murders, state == "New York")


## ---- eval=FALSE---------------------------------------
## no_florida <- filter(murders, state != "Florida")


## ---- eval=FALSE---------------------------------------
## filter(murders, state %in% c("New York", "Texas"))


## ---- eval=FALSE---------------------------------------
## filter(murders, population < 5000000 & region == "Northeast")


## ---- eval=FALSE---------------------------------------
## murders <- mutate(murders, rate =  total/population*100000,
##                   rank = rank(-rate))


## ---- eval=FALSE---------------------------------------
## my_states <- filter(murders, region %in% c("Northeast", "West") &
##                       rate < 1)
## 
## select(my_states, state, rate, rank)


## ---- eval=FALSE---------------------------------------
## mutate(murders, rate =  total/population*100000,
##        rank = rank(-rate)) |>
##   select(state, rate, rank)


## ---- eval=FALSE---------------------------------------
## my_states <- murders |>
##   mutate SOMETHING |>
##   filter SOMETHING |>
##   select SOMETHING


## ------------------------------------------------------
library(NHANES)


## ------------------------------------------------------
library(dslabs)
mean(na_example)
sd(na_example)


## ------------------------------------------------------
mean(na_example, na.rm = TRUE)
sd(na_example, na.rm = TRUE)


## ---- eval=FALSE---------------------------------------
## exp(mean(log(murders$population)))

