In this section, we are learning how to translate, insert, and apply data into RStudio.
Download CO2 emissions per capita from Our World in Data into the directory for this post
Assign the location of the file to file_csv. The data should be int he sme directory as this file
Read the data into R and assign it to emissions
file_csv <- here("_posts",
"2022-02-17-reading-and-writing-data",
"co-emissions-per-capita.csv")
emissions <- read_csv(file_csv)
emissionsemissions
# A tibble: 23,307 × 4
Entity Code Year `Annual CO2 emissions (per capita)`
<chr> <chr> <dbl> <dbl>
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.013
7 Afghanistan AFG 1955 0.0186
8 Afghanistan AFG 1956 0.0218
9 Afghanistan AFG 1957 0.0343
10 Afghanistan AFG 1958 0.038
# … with 23,297 more rows
emissions data thenclean_names from the janitor package to make the names easier to work withtidy_emissionstidy_emissionstidy_emissions <- emissions %>%
clean_names()
tidy_emissions
# A tibble: 23,307 × 4
entity code year annual_co2_emissions_per_capita
<chr> <chr> <dbl> <dbl>
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.013
7 Afghanistan AFG 1955 0.0186
8 Afghanistan AFG 1956 0.0218
9 Afghanistan AFG 1957 0.0343
10 Afghanistan AFG 1958 0.038
# … with 23,297 more rows
tidy_emissions THENfilter to extract rows with year == 1993 THENskim to calculate the descriptive statistics| Name | Piped data |
| Number of rows | 227 |
| 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.00 | 4 | 32 | 0 | 227 | 0 |
| code | 12 | 0.95 | 3 | 8 | 0 | 215 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| year | 0 | 1 | 1993.00 | 0.00 | 1993.00 | 1993.00 | 1993.00 | 1993.00 | 1993.00 | ▁▁▇▁▁ |
| annual_co2_emissions_per_capita | 0 | 1 | 5.07 | 6.96 | 0.04 | 0.59 | 2.76 | 7.38 | 61.19 | ▇▁▁▁▁ |
# A tibble: 12 × 4
entity code year annual_co2_emissions_per_ca…
<chr> <chr> <dbl> <dbl>
1 Africa <NA> 1993 1.04
2 Asia <NA> 1993 2.24
3 Asia (excl. China & India) <NA> 1993 3.22
4 EU-27 <NA> 1993 8.52
5 EU-28 <NA> 1993 8.70
6 Europe <NA> 1993 9.35
7 Europe (excl. EU-27) <NA> 1993 10.5
8 Europe (excl. EU-28) <NA> 1993 10.6
9 North America <NA> 1993 14.0
10 North America (excl. USA) <NA> 1993 4.97
11 Oceania <NA> 1993 11.5
12 South America <NA> 1993 2.09
Entities that are not countries do not have country codes.
filter to extract rows with year == 1993 and without missing codes THENselect to drop the year variable THENrename to change the variable entity to countryemissions_1993emissions_1993 <- tidy_emissions %>%
filter(year == 1993, !is.na(code)) %>%
select(-year) %>%
rename(country = entity)
annual_co2_emissions_per_capita?emissions_1993 THENslice_max to extract the 15 rows with the annual_co2_emissions_per_capitamax_15_emittersannual_co2_emissions_per_capita?emissions_1993 THENslice_min to extract the 15 rows with the lowest valuesmin_15_emittersbind_rows to bind together the max_15_emitters and min_15_emittersmax_min_15max_min_15 <- bind_rows(max_15_emitters, min_15_emitters)
max_min_15 to 3 file formatsmax_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
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
setdiff to check for any differences 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>
country in max_min_15 for plotting and assign to max_min_15_plot_dataemissions_1993 THENmutate to reorder country according to annual_co2_emissions_per_capitamax_min_15_plot_data <- max_min_15 %>%
mutate(country = reorder(country, annual_co2_emissions_per_capita))
max_min_15_plot_dataggplot(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 annual co2 emissions per capita",
subtitle = "for 1993",
x = NULL,
y = NULL)

preview: preview.png