Środki transportu w świetle danych z Eurostatu … od podszewki

We wtorek przedstawiałem graficznie dane z Eurostatu dotyczące transportu.
Przygotowując się do tych analiz, szukałem pakietu, który umożliwi łatwe wczytanie danych z Eurostatu.
Ale nie znalazłem.
Więc napisałem własny!
Od kilku dni z CRANu można ściągnąć pakiet 'SmarterPoland' dla programu R. Można w nim znaleźć kilka użytecznych funkcji do pobierania danych bezpośrednio z Eurostatu.

Poniżej pokażę jak użyć tego pakietu do pobrania spisu tabel z Eurostatu, pobrania danych o transporcie i narysowania wykresu trójkątnego. Wszystkie w czterech prostych krokach.

Zacznijmy od funkcji grepEurostatTOC(wzorzec), która pobiera ze stron Eurostatu listę dostępnych tabel z danymi i wybiera z nich tylko te, które w opisie mają podciąg znaków 'wzorzec'. Poniżej wypisane są wszystkie tabele dostępne w bazach Eurostatu, które w opisie zawierają napis 'split of passenger transport'.

1
2
3
4
5
6
7
8
library(SmarterPoland)
library(plotrix)
# gdzie są dane o udziale pasażerów
grepEurostatTOC("split of passenger transport")
##                                               title          code    type
## 4652             Modal split of passenger transport      tsdtr210 dataset
##      last.update.of.data last.table.structure.change data.start data.end
## 4652          17.08.2012                  14.09.2012       1990     2010

Dane z których chcę korzystać są w tabeli 'tsdtr210′. Użyjemy funkcji getEurostatRCV() do pobrania tej tabeli bezpośrednio z internetowych baz Eurostatu do R, do danych w formacie RCV. W poniższym przypadku format RCV oznacza tyle, że typ transportu jest opisany przez pierwszą kolumnę, kod państwa przez drugą kolumnę, rok przez trzecią kolumnę, a procent używalności danego typu transportu w danym roku i kraju przedstawiony jest w czwartej kolumnie.

9
10
11
12
13
14
15
16
17
18
# ściągamy tabelę 'tsdtr210' z eurostatu. Dane są w formacie RCV
summary(tmp <- getEurostatRCV("tsdtr210"))
##     vehicle         geo            time          value     
##  BUS_TOT:756   AT     :  63   1990   : 108   Min.   : 0.0  
##  CAR    :756   BE     :  63   1991   : 108   1st Qu.: 6.9  
##  TRN    :756   BG     :  63   1992   : 108   Median :12.9  
##                CH     :  63   1993   : 108   Mean   :33.6  
##                CY     :  63   1994   : 108   3rd Qu.:77.4  
##                CZ     :  63   1995   : 108   Max.   :93.4  
##                (Other):1890   (Other):1620   NA's   :397

Dane z postaci RCV (nazywaną również tzw. ang. molten) na postać tabelaryczną można przekształcić funkcją 'cast' z pakietu 'reshape'. Poniżej przykład uzycia tej funkcji, zamieniamy dane 'tmp' na postać tabelaryczną, która w kolumnach będzie miała wartości dla kolejnych lat a w wierszach dla krajów (formuła geo ~ time). Ponieważ w 'tmp' znajdują się dane dla trzech środków transportu, to poniżej tworzone są tak naprawdę trzy tabele, w każdej przedstawiane są dane dla określonego środka transportu (argument subset).

19
20
21
22
23
24
25
26
27
28
29
30
31
autobus <- cast(tmp, geo ~ time, mean, subset = vehicle == "BUS_TOT")
head(autobus[, c(1, 13:22)], 3)
##   geo 2001  2002  2003  2004  2005  2006  2007  2008  2009  2010 
## 1  AT  10.9  10.9  10.9  11.0  10.5  10.4  10.8  10.2  10.5  10.6
## 2  BE  10.7  11.4  12.5  12.7  13.0  13.2  14.3  14.4  13.3  13.6
## 3  BG  32.6  34.7  30.2  25.0  24.3  22.7  21.8  20.8  16.8  17.0
samochod <- cast(tmp, geo ~ time, mean, subset = vehicle == "CAR")
pociag   <- cast(tmp, geo ~ time, mean, subset = vehicle == "TRN")
# wybierz dane z roku 2010 dla każdego z typów transportu
razem    <- cbind(autobus[, "2010 "], samochod[, "2010 "], pociag[, "2010 "])
# dodajemy nazwy państw
rownames(razem) <- levels(autobus[, 1])
razem <- na.omit(razem)

Pozostaje już tylko narysować przygotowane dane. Wykorzystam funkcję 'triax.plot' z pakietu 'plotrix'. Na poniższym wykresie punkty są skupione w prawym dolnym rogu (w większości krajów dominuje transport z użyciem samochodu), więc dla większej czytelności najlepiej usunąć lewy i górny róg, tak jak we wtorkowym wpisie.

32
33
# narysuj wykres trójkątny
triax.plot(razem, show.grid = T, label.points = T, point.labels = rownames(razem), pch = 19)

plot of chunk podsumowanie

I tak pakiet 'SmarterPoland' trafił na CRAN.
Na razie potrafi tylko wczytywać dane z Eurostatu, ale w przyszłości będzie się rozrastał (mam nadzieję).
Chętnych do rozwoju tego pakietu zapraszam do współpracy.

5 thoughts on “Środki transportu w świetle danych z Eurostatu … od podszewki”

  1. Świetny wpis. Nie wiem, w jaki sposób mógłbym się przyczynić do rozwoju tego pakietu, ale jeśli miałby objąć swoim zasięgiem dane z bazy OECD albo GUS (Bank Danych Lokalnych) to byłbym zachwycony. Jestem początkującym użytkownikiem 'R'

    1. To może zacznijmy od Banku Danych Lokalnych. Czy jest API i opis tego API dla tych danych?
      Jeżeli jest to łatwo będzie je ,,zanurzyć” w R.
      Jakieś API być powinno, widziałem że Sejmometr coś opakowuje.

  2. Postaram się dowiedzieć czegoś od znajomych, którzy pracują w US. Ciekawe czy to łączy się bezpośrednio z BDL czy oni ściągnęli dane i je udostępniają?

    1. Napisz jak się czegoś dowiesz. Można zrobić dump danych jakimiś brutalnymi pająkami (modulo tokeny) ale źle byłoby powtórzyć historię Aarona Swartza i Jstora.
      Może nawet jeżeli API dzisiaj jeszcze nie ma, to jest planowane?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *