Reading and Writing Data

Code and text for Quiz 4.

  1. Load the R packages we will use
library(tidyverse)
library(here)
library(janitor) # make sure you install
library(skimr)
  1. Download \(CO_2\) emissions per capita from Our World in Data into the directory for this post.

  2. Assign the location of the file tofile_csv. The data should be in the same directory as this file

Read the data into R and assign it to emissions

file_csv <- here("_posts",
                 "2022-02-14-reading-and-writing-data",
                 "co-emissions-per-capita.csv")

emissions <- read.csv(file_csv)
  1. Show the first 10 rows (observations of) emissions
slice_head(emissions,n=10)
        Entity Code Year Annual.CO2.emissions..per.capita.
1  Afghanistan  AFG 1949                            0.0019
2  Afghanistan  AFG 1950                            0.0109
3  Afghanistan  AFG 1951                            0.0117
4  Afghanistan  AFG 1952                            0.0115
5  Afghanistan  AFG 1953                            0.0132
6  Afghanistan  AFG 1954                            0.0130
7  Afghanistan  AFG 1955                            0.0186
8  Afghanistan  AFG 1956                            0.0218
9  Afghanistan  AFG 1957                            0.0343
10 Afghanistan  AFG 1958                            0.0380
  1. Start with emissions data THEN

use clean names for the janitor package to make the names easier to work with assign the output to tidy_emissions show the first 10 rows of tidy_emissions

tidy_emissions <- emissions %>% 
  clean_names()

slice_head(tidy_emissions,n=10)
        entity code year annual_co2_emissions_per_capita
1  Afghanistan  AFG 1949                          0.0019
2  Afghanistan  AFG 1950                          0.0109
3  Afghanistan  AFG 1951                          0.0117
4  Afghanistan  AFG 1952                          0.0115
5  Afghanistan  AFG 1953                          0.0132
6  Afghanistan  AFG 1954                          0.0130
7  Afghanistan  AFG 1955                          0.0186
8  Afghanistan  AFG 1956                          0.0218
9  Afghanistan  AFG 1957                          0.0343
10 Afghanistan  AFG 1958                          0.0380
  1. Start with the tidy_emissions THEN use filter to extract rows with year == 2000 THEN use skim to calculate the descriptive statistics
tidy_emissions %>% 
  filter(tidy_emissions$year==2000) %>% 
  skim()
Table 1: Data summary
Name Piped data
Number of rows 228
Number of columns 4
_______________________
Column type frequency:
character 2
numeric 2
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
entity 0 1 4 32 0 228 0
code 0 1 0 8 12 217 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
year 0 1 2000.00 0.00 2e+03 2000.00 2000.00 2000.00 2000.00 ▁▁▇▁▁
annual_co2_emissions_per_capita 0 1 5.15 6.93 2e-02 0.74 2.97 7.85 57.41 ▇▁▁▁▁
  1. 13 Observations have a missing code. How are these observations different? start with tidy_emissions then extract rows with year == 2000 and are missing a code
tidy_emissions %>% 
  filter(year== 2000,is.na(code))
[1] entity                          code                           
[3] year                            annual_co2_emissions_per_capita
<0 rows> (or 0-length row.names)

Entities that are not countries do not have country codes

  1. Start with tidy_emissions THEN

use filter to extract rows with year == 2000 and without missing codes THEN use select to drop the year variable THEN use rename to change the variable entityto country assign the output to emissions_2000

emissions_2000 <- tidy_emissions %>% 
  filter(year==2000,!is.na(code)) %>% 
  select(-year) %>% 
  rename(country = entity)
  1. Which 15 countries have the highest annual_co2_emissions_per_capita?

Start with emissions_2000 THEN use slice_max to extract the 15 rows with the annual_co2_emissions_per_capita assign the output to max_15_emitters

max_15_emitters <- emissions_2000 %>% 
  slice_max(annual_co2_emissions_per_capita,n=15)
  1. Which 15 countries have the lowest annual_co2_emissions_per_capita?

Start with emissions_2000 THEN use slice_min to extract the 15 rows with the annual_co2_emissions_per_capita assign the output to min_15_emitters

min_15_emitters <- emissions_2000 %>% 
  slice_min(annual_co2_emissions_per_capita,n=15)
  1. Use blind_rows to bind together the max_15_emitters and min_15_emitters assign the output to max_min_15
max_min_15 <- bind_rows(max_15_emitters,min_15_emitters)
  1. Export max_min_15 to 3 file formats
max_min_15 %>% write_csv("max_min_15.csv") # comma separated values
max_min_15 %>% write_tsv("max_min_15.tsv") # tab separated
max_min_15 %>% write_delim("max_min_15.psv",delim = "|") # pipe-separated
  1. Read the 3 file formats into R
max_min_15_csv <-read_csv ("max_min_15.csv") # comma separated values
max_min_15_tsv <-read_tsv ("max_min_15.tsv") # tab separated
max_min_15_psv <-read_delim ("max_min_15.psv",delim = "|") # pipe-separated
  1. Use setdiff to check for any difference among max_min_15_csv, max_min_15_tsv and max_min_15_psv
setdiff(max_min_15_csv,max_min_15_tsv,max_min_15_psv)
# A tibble: 0 × 3
# … with 3 variables: country <chr>, code <chr>,
#   annual_co2_emissions_per_capita <dbl>

Are there any differences?

  1. Reorder country in max_min_15 for plotting and assign to max_min_15_plot_data

start with emissions_2000 THEN use mutate to reorder country according to annual_co2_emissions_per_capita

max_min_15_plot_data <- max_min_15 %>% 
  mutate(country=reorder(country,annual_co2_emissions_per_capita))
  1. Plot max_min_15_plot_data
ggplot(data=max_min_15_plot_data,
       mapping=aes(x=annual_co2_emissions_per_capita,y=country))+
  geom_col()+
  labs(title="The top 15 and bottom 15 per capita CO2 emissions",
       subtitle = "for 2000",
       x=NULL,
       y=NULL)

17.Save the plot directory with this post

ggsave(filename = "preview.png",
       path = here("_posts","2022-02-14-reading-and-writing-data"))
  1. Add preview.png to yaml chuck at the top of this file

preview: preview.png