-
Notifications
You must be signed in to change notification settings - Fork 0
/
3_Kedich.R
39 lines (32 loc) · 1.76 KB
/
3_Kedich.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
library(tidyverse)
library(readxl)
library(writexl)
#запись данных из таблицы во фреймы
emis <- read_excel("emissions.xlsx", 1, col_types = c('text', rep('numeric', 8)), skip = 1)
colnames(emis)[1] <- "Region"
drop <- read_excel("emissions.xlsx", 2, col_types = c('text', rep('numeric', 8)), skip = 1, na = c("-", " "))
colnames(drop)[1] <- "Region"
#запись названий округов в новый столбец
emis <- emis %>%
mutate(f_okrug = if_else(str_detect(emis$Region, 'федеральный округ'), Region, NULL)) %>%
fill(f_okrug) %>%
filter(!str_detect(emis$Region, 'федеральный | Федерация'))
drop <- drop %>%
mutate(f_okrug = if_else(str_detect(drop$Region, 'федеральный округ'), Region, NULL)) %>%
fill(f_okrug) %>%
filter(!str_detect(drop$Region, 'федеральный | Федерация'))
#Преобразование данных во фреймах
emisnew <- pivot_longer(emis, cols = 2:9, names_to = "year", values_to = "emit")
dropnew <- pivot_longer(drop, cols = 2:9, names_to = "year", values_to = "drop")
#Соедениение таблиц
pollut <- inner_join(emisnew, dropnew, by = c("Region" = "Region", "year" = "year", "f_okrug" = "f_okrug")) %>%
mutate(dif = drop - emit)
#группировка и определение наиболее загрязняющих регионов по годам
pollut <- pollut %>%
group_by(f_okrug, year) %>%
arrange(dif) %>%
filter(row_number() == 1)
pollut$year <- as.numeric(pollut$year)
colnames(pollut) <- c('Регион', 'Федеральный округ', 'Год', 'Выбросы', 'Улавливание', 'Разница')
#запись в файл
write_xlsx(pollut, "polluters.xlsx")