knitr::opts_chunk$set( comment = "#>", echo = T, message = F, warning = F )
library(eeval)
Jakub Rudek
AGH, Wydział Geodezji Górniczej i Inżynierii Środowiska
Geoinformacja III rok
e-mail: rjakub999@gmail.com
Pakiet utworzony w ramach przedmiotu Metody inwentaryzacji i Szacowanie Emisji.
Służy do obliczania emisji zanieczyszczeń generowanych przez pojazdy z silnikami spalinowymi i wyświetlania wyników na wykresach. Funkcje pakietu korzystają z danych dołączonych do pakietu.
Plik źródłowy z surowymi danymi: 1.A.3.b.i-iv Road Transport Appendix 4 Emission Factors 2019.xlsx
nie znajduje się w pakiecie. Został on wstępnie przetworzony i zapisany jako ramka danych wskazniki
. Ten obiekt jest dołączony do pakietu i stanowi podstawowe dane do dalszych analiz. Do prawiłdowego działania funkcji pakietu nie można zmieniać formatu danych zawartych w obiekcie wskazniki
. Dodatkowo do działania pakietu używany jest obiekt input
.
Winieta opisuje następujące zagadnienia:
1. Format danych wejściowych przetwarzanych przez funkcje pakietu.
2. Opis funkcji pakietu i możliwości ich wykorzystania.
3. Przygotowanie własnych danych surowych.
Repozytorium pakietu znajduje się na portalu github.
Do jego pobrania i instalacji potrzebny jest pakiet devtools
.
if(!require(devtools)) {install.packages("devtools"); require(devtools)} # instalcja pakietu eeval devtools::install_github("rjakub999/eeval") library(eeval)
Poniżej sposób wywołania ogólnych informacji o pakiecie.
help(package = "eeval")
Do pełnego wykorzystania możliwości pakietu zalecane jest załadowanie dodatkowych pakietów.
library(dplyr) library(magrittr) library(qpdf) library(utils) library(rlang) library(stats) library(ggplot2)
Ramka danych wskazniki
to dane wejściowe do których odwołuje się funkcja eeval_calc()
.
Dane te są częścią pakietu, ale można też utworzyć własne wskazniki
, co zostało opisane w punkcie 3.
W obiekcie wskazniki
mamy zapisane dane do algorytmu szacowania emisji z podziałem na różne kategorie pojazdów,
rodzaj paliwa, technologię silnika, tryb jazdy, normę dopuszczalnej emisji spalin.
Obiekt input
to dane wejściowe, które są argumentem funkcji eeval_calc()
.
Przykładowy input
jest dołaczony do pakietu. W punkcie 2 jest opisane, jak utworzyć go samodzielnie.
Zawiera następujące dane:
Natężenie ruchu to wygenerowany losowo wektor o zadanej długosci.
Pozostale dane są wybrane z obiektu wskazniki
.
Dane zawarte w pakiecie posiadają dokumentację dostępną w systemie pomocy programu RStudio.
Przykłady wywołania dokumentacji do danych pakietu:
?input ?wskazniki ?eeval_wynik
Funkcje pakietu posiadają dokumentację dostępną w systemie pomocy programu RStudio. Maj one też "samokomentujące" się nazwy. W celu zapoznania się ze szczegółami zachęcam do jej przeglądnięcia po zainstalowaniu pakietu. Przykłady wywołania dokumentacji do funkcji pakietu:
?eeval_input ?eeval_calc ?eeval_draw
Uruchomienie funkcji z parametrami domyślnymi pozwala na szybki start.
## ZESTAW PARAMETROW DOMYSLNYCH ----------------------------------- eeval_wynik <- eeval_calc() glimpse(eeval_wynik)
Funkcja eeval_draw()
automatycznie określa rodzaj generowanych wykresów w zależności od typu zmiennej dla osi x:
dla zmiennej typu numeric rysowane są wykresy punktowe z wygładzonymi liniami
dla zmiennej typu character rysowane są wykresy pudełkowe
eeval_draw()
W celu sprawnego zapoznania się z modyfikacją parametrów funkcji pakietu przygotowałem dwa zestawy parametrów, które pokazują cały "workflow" działania z pakietem.
Uwaga: Każde kolejne uruchomiene funkcji eeval_input()
powoduje wygenerowanie innego zestawu danych.
``` {r zestaw2, eval = FALSE}
input2 <- eeval_input(segm = c("Mini","Small","Medium","Large-SUV-Executive"), n_spl = 300)
eeval_wynik2 <- eeval_calc(dane = input2, kategoria = "Passenger Cars", euro = c("Euro 3", "Euro 4", "Euro 5", "Euro 6 up to 2016"), substancja = c("EC", "CO", "NOx"), mode = "")
eeval_draw(dane = eeval_wynik2, x = .data$Nat, y = .data$Emisja, z = .data$Pollutant, u = .data$Euro.Standard, nrow = 2, max_y = 2000)
Jak widać dla funkcji `eeval_calc()` parametry euro i substancja możemy podawać jako wektory zawierające kilka wybranych z dostępnych wartości. W celu samodzielnego wygenerowania ramki danych `input` musimy wykonać sprawdzenie dostpęnych wartości. Sprawdzenie jakie są dostępne segmenty pojazdów (Segment) w danej kategorii (Category) możemy wykonać posługując się przykładowym kodem: ```r wskazniki %>% filter(Category == "Buses") %>% select(Segment) %>% unique()
Jezeli input3 będzie wygenerowany z wektorem segmentu, ktory nie nalezy do danej kategorii pojazdow to zgłosi nam bład. Odpowiada za to przedostatnia linijka kodu w funkcji eeval_calc()
``` {r zestaw3, eval = FALSE}
input3 <- eeval_input(segm = c("Urban Buses Midi <=15 t", "Urban Buses Standard 15 - 18 t", "Urban Buses Articulated >18 t", "Coaches Standard <=18 t"), n_spl = 200)
eeval_wynik3 <- eeval_calc(dane = input3, kategoria = "Buses", euro = c("Euro II", "Euro III", "Euro IV", "Euro V"), substancja = c("EC", "CO", "NOx", "NH3"), mode = "")
eeval_draw(dane = eeval_wynik3, x = .data$Segment, y = .data$Emisja, z = .data$Pollutant, nrow = 2, max_y = 1000)
*** ## 3. Własne dane "surowe". *** Po zaznajomieniu się z działaniem funkcji pakietu, możemy zacząć zabawę z innymi danymi "surowymi". Aktualną wersję pliku surowych danych można pobrać ze strony: [eea dane](https://www.eea.europa.eu/publications/emep-eea-guidebook-2019/part-b-sectoral-guidance-chapters/1-energy/1-a-combustion/road-transport-appendix-4-emission/view) Dokumemntacja do tych danych jest zamieszczona na stronie: [eea opis](https://www.eea.europa.eu/publications/emep-eea-guidebook-2019/part-b-sectoral-guidance-chapters/1-energy/1-a-combustion/1-a-3-b-i/view) **Uwaga:** Jeżeli po kliknięciu na link strona nie otwiera się, to trzeba kliknąć prawym klawiszem na linku i otworzyć go w nowym oknie. Następnie można samodzielnie utworzyć obiekt `wskazniki`. W tym celu należy użyć następującego kodu: ``` {r utworz_wskazn, eval = FALSE} library("openxlsx") katalog = "c:/sciezka_do_pliku/" setwd(katalog) # przykładowa nazwa pliku - należy ustawić własną plik_xlsx = "1.A.3.b.i-iv Road Transport Appendix 4 Emission Factors 2019.xlsx" wskazniki <- openxlsx::read.xlsx(xlsxFile = plik_xlsx, sheet = 2) wskazniki$Mode[is.na(wskazniki$Mode)] <- "" wskazniki <-wskazniki %>% select(-`EF.[g/km].or.ECF.[MJ/km]`, -`Min.Speed.[km/h]`, -`Max.Speed.[km/h]`, -`Road.Slope`, -`Load`) colnames(wskazniki)[15:17] <- c("Reduction", "Bio", "Procent")
Teraz wystarczy wygenerować własny input
funkcją eeval_input()
z odpowiednimi parametrami.
W dalszej kolejności możemy obliczać emisje i rysować wykresy.
Pożytecznych działań z pakietem!
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.