Activity_10/26

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
disease_democ <- read_csv("disease_democ.csv")
Rows: 168 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (2): country, income_group
dbl (2): democ_score, infect_rate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
tail(disease_democ)
# A tibble: 6 × 4
  country       income_group        democ_score infect_rate
  <chr>         <chr>                     <dbl>       <dbl>
1 Turkey        Upper middle income        54.8          39
2 Panama        Upper middle income        46            40
3 Gabon         Upper middle income        34.6          41
4 Venezuela, RB Upper middle income        41.6          42
5 Colombia      Upper middle income        44.8          43
6 Brazil        Upper middle income        37.2          45
summary(disease_democ)
      country       income_group  democ_score     infect_rate   
 Length   :168   Length   :168   Min.   :15.80   Min.   :23.00  
 N.unique :168   N.unique :  5   1st Qu.:28.40   1st Qu.:27.00  
 N.blank  :  0   N.blank  :  0   Median :38.40   Median :32.00  
 Min.nchar:  4   Min.nchar: 10   Mean   :42.78   Mean   :33.33  
 Max.nchar: 24   Max.nchar: 21   3rd Qu.:52.65   3rd Qu.:39.00  
                                 Max.   :86.60   Max.   :48.00  
str(disease_democ)
spc_tbl_ [168 × 4] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ country     : chr [1:168] "Bahrain" "Bahamas, The" "Qatar" "Latvia" ...
 $ income_group: chr [1:168] "High income: non-OECD" "High income: non-OECD" "High income: non-OECD" "High income: non-OECD" ...
 $ democ_score : num [1:168] 45.6 48.4 50.4 52.8 46 64 65.8 70.6 57.6 40.6 ...
 $ infect_rate : num [1:168] 23 24 24 25 26 26 26 26 27 28 ...
 - attr(*, "spec")=
  .. cols(
  ..   country = col_character(),
  ..   income_group = col_character(),
  ..   democ_score = col_double(),
  ..   infect_rate = col_double()
  .. )
 - attr(*, "problems")=<pointer: 0x000002416d9ff4a0> 

Activity 1

unique(disease_democ$income_group)
[1] "High income: non-OECD" "High income: OECD"     "Low income"           
[4] "Lower middle income"   "Upper middle income"  
#shows unique chr descriptions for the income group column
n_distinct(disease_democ$country)
[1] 168
#shows how many unique rows in the dataset

Activity 2

disease_democ |>
  filter(country == "Qatar") |>
  pull(income_group)
[1] "High income: non-OECD"
#Qatar is in high income: non-OECD group
names(postscriptFonts())
 [1] "serif"                "sans"                 "mono"                
 [4] "AvantGarde"           "Bookman"              "Courier"             
 [7] "Helvetica"            "Helvetica-Narrow"     "NewCenturySchoolbook"
[10] "Palatino"             "Times"                "URWGothic"           
[13] "URWBookman"           "NimbusMon"            "NimbusSan"           
[16] "URWHelvetica"         "NimbusSanCond"        "CenturySch"          
[19] "URWPalladio"          "NimbusRom"            "URWTimes"            
[22] "URW2Helvetica"        "URW2HelveticaItalic"  "URW2Times"           
[25] "NimbusMonoPS"         "ArialMT"              "ComputerModern"      
[28] "ComputerModernItalic" "Japan1"               "Japan1HeiMin"        
[31] "Japan1GothicBBB"      "Japan1Ryumin"         "Korea1"              
[34] "Korea1deb"            "CNS1"                 "GB1"                 
disease_democ_chart <- ggplot(disease_democ, aes(x = infect_rate, y = democ_score)) +
  labs(x = "Infectious Disease Prevalence Score", y = "Democratization Score", title = "Comparison of Disease Prevalence and Democratization Score") + theme_minimal(base_family = "serif")
disease_democ_chart

disease_democ_chart + geom_point(size = 3, alpha = 0.5) + geom_smooth(method = lm, se = FALSE, color = "red")
`geom_smooth()` using formula = 'y ~ x'

library(plotly)

Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':

    last_plot
The following object is masked from 'package:stats':

    filter
The following object is masked from 'package:graphics':

    layout
ggplotly()
`geom_smooth()` using formula = 'y ~ x'
p <- disease_democ_chart +
  geom_point(size = 2.5, alpha = 0.5) +
  geom_smooth(method = lm, se = FALSE, color = "red")
p <- ggplotly(p)
`geom_smooth()` using formula = 'y ~ x'
p
disease_democ_chart +
  geom_point(size = 3, alpha = 0.5, aes(color =income_group)) +
  geom_smooth(method = lm, se = FALSE, color = "black", lty = 2, linewidth = 0.3)
`geom_smooth()` using formula = 'y ~ x'

ggplot(disease_democ, aes(x = infect_rate, y = democ_score, color = income_group)) +
  labs(x = "infectious Disease Prevalence Score",
       y = "Democratization Score",
       title = "Comparison of Disease Prevalence and Democratization Score") +
  theme_minimal(base_size = 14, base_family = "serif") +
  geom_point(size = 3, alpha = 0.5) +
  geom_smooth(method = lm, se = FALSE, lty = 2, linewidth = 0.3)
`geom_smooth()` using formula = 'y ~ x'

library(dslabs)
data(package = "dslabs")
list.files(system.file("script", package = "dslabs"))
 [1] "make-admissions.R"                   
 [2] "make-brca.R"                         
 [3] "make-brexit_polls.R"                 
 [4] "make-calificaciones.R"               
 [5] "make-death_prob.R"                   
 [6] "make-divorce_margarine.R"            
 [7] "make-gapminder-rdas.R"               
 [8] "make-greenhouse_gases.R"             
 [9] "make-historic_co2.R"                 
[10] "make-mice_weights.R"                 
[11] "make-mnist_127.R"                    
[12] "make-mnist_27.R"                     
[13] "make-movielens.R"                    
[14] "make-murders-rda.R"                  
[15] "make-na_example-rda.R"               
[16] "make-nyc_regents_scores.R"           
[17] "make-olive.R"                        
[18] "make-outlier_example.R"              
[19] "make-polls_2008.R"                   
[20] "make-polls_us_election_2016.R"       
[21] "make-pr_death_counts.R"              
[22] "make-reported_heights-rda.R"         
[23] "make-research_funding_rates.R"       
[24] "make-results_us_election_2012.R"     
[25] "make-stars.R"                        
[26] "make-temp_carbon.R"                  
[27] "make-tissue-gene-expression.R"       
[28] "make-trump_tweets.R"                 
[29] "make-weekly_us_contagious_diseases.R"
[30] "save-gapminder-example-csv.R"        
library(gganimate)

p <- ggplot(gapminder, aes(gdp, life_expectancy, size = population, color = continent)) +
  geom_point(alpha = 0.7) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  labs(
    title = "Year: {frame_time}",
    x = "GDP per capita",
    y = "Life expectancy"
  )
colnames(gapminder)
[1] "country"          "year"             "infant_mortality" "life_expectancy" 
[5] "fertility"        "population"       "gdp"              "continent"       
[9] "region"          
library(gapminder)

Attaching package: 'gapminder'
The following object is masked from 'package:dslabs':

    gapminder
library(gifski)
anim <- p + transition_time(year) +
  ease_aes("linear")

animate(anim, renderer = gifski_renderer())
Warning: Removed 90 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 90 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 91 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 89 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 83 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 83 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 81 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 80 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 80 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 79 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 79 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 79 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 79 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 72 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 71 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 71 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 67 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 66 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 66 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 63 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 63 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 63 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 63 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 62 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 51 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 51 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 47 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 47 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 44 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 44 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 44 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 41 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 41 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 38 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 38 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 35 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 35 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 31 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 29 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 29 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 27 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 27 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 14 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 14 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 13 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 13 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 11 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 10 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 10 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 8 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 8 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 6 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 6 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 6 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 3 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 3 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 3 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 3 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 4 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 9 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 17 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 17 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).
Removed 185 rows containing missing values or values outside the scale range
(`geom_point()`).

library(tidyverse)
library(highcharter)
Registered S3 method overwritten by 'quantmod':
  method            from
  as.zoo.data.frame zoo 

Attaching package: 'highcharter'
The following object is masked from 'package:dslabs':

    stars
library(RColorBrewer)
library(dplyr)

nations <- read_csv("nations.csv") |>
  mutate(gdp_tn = gdp_percap*population/10^12)
Rows: 5275 Columns: 10
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (5): iso2c, iso3c, country, region, income
dbl (5): year, gdp_percap, population, birth_rate, neonat_mortal_rate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
big4 <- nations |>
  filter(iso3c %in% c("CHN", "DEU", "JPN", "USA")) |>
  arrange(year)

highchart() |>
  hc_add_series(data = big4,
                type = "line",
                hcaes(x = year,
                      y = gdp_tn,
                      group = country))
cols <- brewer.pal(4, "Set1")

highchart() |>
  hc_add_series(data = big4,
                type = "line",
                hcaes(x = year,
                      y = gdp_tn,
                      group = country)) |>
  hc_colors(cols) |>
  hc_xAxis(title = list(text="Year")) |>
  hc_yAxis(title = list(text="GDP ($ trillion)")) |>
  hc_plotOptions(series = list(marker = list(symbol = "circle"))) |>
  hc_legend(align = "right",
            verticalAlign = "top")
big4_chart <- highchart() |>
  hc_add_series(data = big4,
                type = "line",
                hcaes(x = year,
                      y = gdp_tn, 
                      group = country)) |>
  hc_colors(cols) |>
  hc_xAxis(title = list(text="Year")) |>
  hc_yAxis(title = list(text="GDP ($ trillion)")) |>
  hc_plotOptions(series = list(marker = list(symbol = "circle"))) |>
  hc_legend(align = "right", 
            verticalAlign = "top") |>
  hc_tooltip(shared = TRUE,
             borderColor = "black",
             pointFormat = "{point.country}: {point.gdp_tn:.2f}")
big4_chart
regions <- nations |>
  group_by(year,region) |>
  summarize(gdp_tn = sum(gdp_tn, na.rm = TRUE)) |>
  arrange(year,region)
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year and region.
ℹ Output is grouped by year.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, region))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
highchart () |>
  hc_add_series(data = regions,
                type = "area",
                hcaes(x = year,
                      y = gdp_tn, 
                      group = region))
cols <- brewer.pal(7, "Set2")

highchart () |>
  hc_add_series(data = regions,
                type = "area",
                hcaes(x = year,
                      y = gdp_tn, 
                      group = region)) |>
  hc_colors(cols) |> 
  hc_chart(style = list(fontFamily = "Georgia",
                        fontWeight = "bold")) |>
  hc_plotOptions(series = list(stacking = "normal",
                               marker = list(enabled = FALSE,
                                             states = list(hover = list(enabled = FALSE))),
                               lineWidth = 0.5,
                               lineColor = "white")) |>
  hc_xAxis(title = list(text="Year")) |>
  hc_yAxis(title = list(text="GDP ($ trillion)")) |>
  hc_legend(align = "right", verticalAlign = "top",
            layout = "vertical")
food_stamps <- read_csv("food_stamps.csv")
Rows: 47 Columns: 3
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (3): year, participants, costs

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
cols <- c("dodgerblue","orange")  # set the color palette to dodger blue and orange

highchart() |>
  hc_yAxis_multiples(
    list(title = list(text = "Participants (millions)")),
    list(title = list(text = "Costs ($ billions)"),
         opposite = TRUE)
  ) |>
  hc_add_series(data = food_stamps$participants,
                name = "Participants (millions)",
                type = "column",
                yAxis = 0) |>
  hc_add_series(data = food_stamps$costs,
                name = "Costs ($ billions)",
                type = "line",
                yAxis = 1) |>
  hc_xAxis(categories = food_stamps$year,
           tickInterval = 5) |>
  hc_colors(cols) |>
  hc_chart(style = list(fontFamily = "AvantGarde",
                        fontWeight = "bold"))
library(dplyr)
library(ggplot2)

nations <- read_csv("nations.csv") |>
  mutate(gdp_tn = gdp_percap*population/10^12)
Rows: 5275 Columns: 10
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (5): iso2c, iso3c, country, region, income
dbl (5): year, gdp_percap, population, birth_rate, neonat_mortal_rate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
big4 <- nations |>
  filter(iso3c %in% c("CHN", "DEU", "JPN", "USA")) |>
  arrange(year)

#Plot 1
ggplot(big4, aes(x = year, y = gdp_tn, color = country, group = country)) +
  labs(
    title = "China's Rise to Become the Largest Economy",
    x = "Year",
    y = "GDP ($ trillion)"
  ) +
  geom_line(size = 1) +
  geom_point() +
  theme_minimal() +
  scale_color_brewer(palette = "Set1")
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

#Plot 2
regions <- nations |>
  group_by(year,region) |>
  summarize(gdp_tn = sum(gdp_tn, na.rm = TRUE)) |>
  arrange(year,region)
`summarise()` has regrouped the output.
ℹ Summaries were computed grouped by year and region.
ℹ Output is grouped by year.
ℹ Use `summarise(.groups = "drop_last")` to silence this message.
ℹ Use `summarise(.by = c(year, region))` for per-operation grouping
  (`?dplyr::dplyr_by`) instead.
ggplot(regions, aes(x = year, y = gdp_tn, fill = region, group = region)) +
  labs(
    title = "GDP by World Bank Region",
    x = "Year",
    y = "GDP ($ trillion)"
  ) +
  geom_area() +
  theme_minimal() +
  scale_fill_brewer(palette = "Set2")