Annual CO2 emmisions per capita with 15 highest and 15 lowest countries.
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 in the same directory as this file.
Read the data into R and assign it to emissions
file_csv <- here("_posts",
"2022-02-21-reading-and-writing-data",
"co-emissions-per-capita (1).csv")
emissions <- read_csv(file_csv)
emissions
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
emissions
data THENclean_names
from the janitor package to make the names easier to work withtidy_emissions
tidy_emissions
tidy_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 == 2011
THENskim
to calculate the descriptive statisticsName | Piped data |
Number of rows | 229 |
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 | 229 | 0 |
code | 12 | 0.95 | 3 | 8 | 0 | 217 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
year | 0 | 1 | 2011.00 | 0.00 | 2011.00 | 2011.00 | 2011.00 | 2011.00 | 2011.00 | ▁▁▇▁▁ |
annual_co2_emissions_per_capita | 0 | 1 | 5.28 | 6.26 | 0.04 | 0.85 | 3.27 | 7.53 | 39.12 | ▇▂▁▁▁ |
tidy_emissions
then extract rows with year == 2011
and are missing a code# A tibble: 12 × 4
entity code year annual_co2_emissions_per_ca…
<chr> <chr> <dbl> <dbl>
1 Africa <NA> 2011 1.18
2 Asia <NA> 2011 4.17
3 Asia (excl. China & India) <NA> 2011 3.96
4 EU-27 <NA> 2011 7.56
5 EU-28 <NA> 2011 7.53
6 Europe <NA> 2011 8.16
7 Europe (excl. EU-27) <NA> 2011 9.00
8 Europe (excl. EU-28) <NA> 2011 9.45
9 North America <NA> 2011 12.4
10 North America (excl. USA) <NA> 2011 5.30
11 Oceania <NA> 2011 12.2
12 South America <NA> 2011 2.78
filter
to extract rows with year == 2011 and without missing codes THENselect
to drop the year
variable THENrename
to change the variable entity
to country
emissions_2011
emissions_2011 <- tidy_emissions %>%
filter(year == 2011, !is.na(code)) %>%
select(-year) %>%
rename(country = entity)
annual_co2_emissions_per_capita
?emissions_2011
THENslice_max
to extract the 15 rows with the annual_co2_emissions_per_capita
max_15_emitters
annual_co2_emissions_per_capita
?emissions_2011
THENslice_min
to extract the 15 rows with the lowest valuesmin_15_emitters
bind_rows
to bind together the max_15_emitters
and min_15_emitters
max_min_15
max_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)
# A tibble: 0 × 3
# … with 3 variables: country <chr>, code <chr>,
# annual_co2_emissions_per_capita <dbl>
Are there any differences?
country
in max_min_15
for plotting and assign max_min_15_plot_dataemissions_2011
THENmutate
to reorder country
according to per_capital_co2_emissions
max_min_15_plot_data <- max_min_15 %>%
mutate(country = reorder(country, annual_co2_emissions_per_capita))
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 2011",
x = NULL,
y = NULL)
preview: preview.png