Na początku mojego zadania załaduję kilka bibliotek przydatnych w czasie jego realizacji oraz zdefinuję jedną zmienną pomocniczą o nazwie lata
,przechowującą wektor lat dla których przygotowane są analizowane raporty zapisane w plikach csv oraz xlsx. Przygotuję także dwie funkcje kable1
oraz kable2
ułatwiające formatowanie danych prezentowanych w raporcie.
library(kableExtra)
library(validate)
library(readxl)
library(tidyverse)
lata = 2006:2018
kable1 = function(data) data %>% kbl() %>%
kable_styling(bootstrap_options =
c("striped", "hover", "condensed", "responsive"))
kable2 = function(data, height="240px") data %>% kable1 %>%
scroll_box(width = "100%", height = height)
Do importu danych wykorzystałem funkcję read_delim
z pakietu readr
wywołaną przez standardowe narzędzie Import dataset z RStudio.
ROLN_3179_csv <- read_delim("ROLN_3179.csv",
delim = ";", escape_double = FALSE, trim_ws = TRUE)
Niestety ilość argumentów funkcji read_delim
możliwych do ustawienia w okienku Import dataset jest niewystarczająca a przez to zaimportowane dane maj nieco kłopotliwą postać.
Po pierwsze nazwy kolumn (zmiennych) są zdecydowanie za długie i niezbyt czytelne.
names(ROLN_3179_csv) %>% kable2
x |
---|
Kod |
Nazwa |
gospodarstwa ogółem;gospodarstwa;2006;[-] |
gospodarstwa ogółem;gospodarstwa;2007;[-] |
gospodarstwa ogółem;gospodarstwa;2008;[-] |
gospodarstwa ogółem;gospodarstwa;2009;[-] |
gospodarstwa ogółem;gospodarstwa;2010;[-] |
gospodarstwa ogółem;gospodarstwa;2011;[-] |
gospodarstwa ogółem;gospodarstwa;2012;[-] |
gospodarstwa ogółem;gospodarstwa;2013;[-] |
gospodarstwa ogółem;gospodarstwa;2014;[-] |
gospodarstwa ogółem;gospodarstwa;2015;[-] |
gospodarstwa ogółem;gospodarstwa;2016;[-] |
gospodarstwa ogółem;gospodarstwa;2017;[-] |
gospodarstwa ogółem;gospodarstwa;2018;[-] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2006;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2007;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2008;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2009;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2010;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2011;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2012;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2013;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2014;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2015;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2016;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2017;[ha] |
gospodarstwa ogółem;powierzchnia użytków rolnych;2018;[ha] |
…29 |
Po drugie można zauważyć, że wczytanych zostało aż 29 zmiennych podczas gdy faktycznie powinno ich być 28. Ostania kolumna powstała z powodu zakończenia każdej linii pliku csv średnikiem. Należało by także dobrze się zastanowić czy na pewno będzie mi potrzebny pierwszy wiersz który zawiera podsumowanie dla całego kraju. Z punktu widzenia dalszej obróbki i analizy danych ten rekord w ogóle nie powinien być brany pod uwagę. Został on wczytany jedynie z powodu wymagań zaliczenia. Z tego też powodu zmienna Nazwa
otrzyma w mojej tabeli nazwę Województwo
.
Dane wczytałem jeszcze raz, tym razem z ustawieniem odpowiednich, dodatkowych parametrów funkcji read_delim
.
ROLN_3179_csv <-
read_delim(
"ROLN_3179.csv",
delim = ";",
escape_double = FALSE,
trim_ws = TRUE,
skip = 1,
col_select = -col29,
col_names = c(
"Kod",
"Województwo",
paste0("gosp_", lata),
paste0("pow_", lata),
"col29")
)
ROLN_3179_csv %>% kable2
Kod | Województwo | gosp_2006 | gosp_2007 | gosp_2008 | gosp_2009 | gosp_2010 | gosp_2011 | gosp_2012 | gosp_2013 | gosp_2014 | gosp_2015 | gosp_2016 | gosp_2017 | gosp_2018 | pow_2006 | pow_2007 | pow_2008 | pow_2009 | pow_2010 | pow_2011 | pow_2012 | pow_2013 | pow_2014 | pow_2015 | pow_2016 | pow_2017 | pow_2018 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000000 | POLSKA | 9187 | 11870 | 14896 | 17091 | 20582 | 23449 | 25944 | 26598 | 24829 | 22277 | 22435 | 20257 | 19207 | 228038 | 287529 | 314848 | 367062 | 519069 | 605520 | 661688 | 669970 | 657902 | 580730 | 536579 | 494978 | 484677 |
0200000 | DOLNOŚLĄSKIE | 481 | 652 | 879 | 1021 | 1227 | 1322 | 1312 | 1189 | 1046 | 849 | 813 | 741 | 713 | 19332 | 21988 | 28467 | 26427 | 39703 | 45547 | 44304 | 37455 | 37005 | 31261 | 29200 | 27542 | 27357 |
0400000 | KUJAWSKO-POMORSKIE | 173 | 217 | 258 | 279 | 327 | 371 | 390 | 415 | 401 | 363 | 470 | 419 | 395 | 4846 | 5884 | 5943 | 6826 | 7688 | 8376 | 8813 | 11152 | 11573 | 10645 | 9263 | 8331 | 7655 |
0600000 | LUBELSKIE | 1072 | 1402 | 1566 | 1710 | 1962 | 2065 | 2174 | 2129 | 1975 | 1825 | 1980 | 1904 | 1948 | 19957 | 23934 | 26892 | 30113 | 34855 | 34837 | 37466 | 40819 | 38467 | 34052 | 31343 | 29001 | 28428 |
0800000 | LUBUSKIE | 256 | 361 | 480 | 579 | 833 | 1081 | 1356 | 1422 | 1370 | 1202 | 1148 | 948 | 877 | 12094 | 18201 | 18207 | 22929 | 35797 | 44259 | 52581 | 54692 | 53300 | 46343 | 43235 | 37923 | 37174 |
1000000 | ŁÓDZKIE | 218 | 261 | 314 | 366 | 420 | 478 | 518 | 528 | 508 | 478 | 497 | 477 | 491 | 3378 | 3561 | 4829 | 5270 | 7671 | 8746 | 9908 | 10342 | 11229 | 10158 | 9986 | 9260 | 8905 |
1200000 | MAŁOPOLSKIE | 1363 | 1627 | 2100 | 2197 | 2156 | 2138 | 2103 | 1838 | 1378 | 1128 | 1093 | 934 | 770 | 13827 | 14481 | 22619 | 16488 | 21968 | 21396 | 21050 | 17005 | 15529 | 12976 | 12364 | 10691 | 8844 |
1400000 | MAZOWIECKIE | 1028 | 1215 | 1481 | 1673 | 1935 | 2140 | 2373 | 2609 | 2374 | 2147 | 2426 | 2215 | 2284 | 20878 | 23218 | 27742 | 34538 | 46229 | 50100 | 55804 | 63445 | 60354 | 53790 | 49517 | 44348 | 42049 |
1600000 | OPOLSKIE | 46 | 53 | 62 | 63 | 79 | 86 | 90 | 88 | 75 | 67 | 68 | 57 | 61 | 1196 | 934 | 1571 | 1879 | 3180 | 2703 | 2930 | 3543 | 3306 | 3042 | 3216 | 2790 | 3554 |
1800000 | PODKARPACKIE | 1164 | 1577 | 1892 | 2014 | 2091 | 2045 | 1940 | 1750 | 1475 | 1261 | 1252 | 1194 | 1131 | 20601 | 27047 | 28671 | 22593 | 31868 | 32359 | 30381 | 29506 | 23510 | 16656 | 15486 | 15349 | 13630 |
2000000 | PODLASKIE | 628 | 847 | 1160 | 1528 | 2033 | 2440 | 2924 | 3407 | 3432 | 3273 | 3437 | 3211 | 2989 | 11657 | 15391 | 20410 | 28764 | 42917 | 52066 | 56367 | 63548 | 64897 | 56528 | 55168 | 53551 | 51608 |
2200000 | POMORSKIE | 222 | 273 | 392 | 494 | 648 | 763 | 894 | 893 | 847 | 737 | 679 | 609 | 540 | 8037 | 10968 | 11366 | 14591 | 22554 | 27357 | 30615 | 28721 | 29282 | 24866 | 23328 | 22419 | 19974 |
2400000 | ŚLĄSKIE | 116 | 143 | 176 | 199 | 228 | 238 | 236 | 242 | 230 | 201 | 180 | 162 | 148 | 2340 | 3079 | 3935 | 3632 | 5739 | 6787 | 7125 | 7220 | 7788 | 6638 | 5324 | 3726 | 2951 |
2600000 | ŚWIĘTOKRZYSKIE | 892 | 995 | 1165 | 1170 | 1243 | 1296 | 1288 | 1207 | 992 | 853 | 834 | 740 | 680 | 8963 | 9824 | 10841 | 10647 | 13123 | 14301 | 14551 | 15122 | 13038 | 11598 | 10739 | 9970 | 9087 |
2800000 | WARMIŃSKO-MAZURSKIE | 586 | 773 | 1059 | 1514 | 2279 | 3033 | 3793 | 4235 | 4234 | 4041 | 4142 | 3745 | 3393 | 23991 | 28810 | 28791 | 49617 | 75242 | 98473 | 112945 | 116199 | 117097 | 112768 | 108667 | 107067 | 104574 |
3000000 | WIELKOPOLSKIE | 264 | 415 | 516 | 588 | 748 | 888 | 974 | 1006 | 966 | 809 | 843 | 736 | 727 | 14511 | 21096 | 20417 | 23770 | 32513 | 38434 | 41479 | 41617 | 42071 | 34523 | 29171 | 25389 | 25994 |
3200000 | ZACHODNIOPOMORSKIE | 678 | 1059 | 1396 | 1696 | 2373 | 3065 | 3579 | 3640 | 3526 | 3043 | 2573 | 2165 | 2060 | 42431 | 59114 | 54151 | 68977 | 98023 | 119780 | 135367 | 129585 | 129456 | 114887 | 100570 | 87620 | 92892 |
W celu szybkiego przygotowania porównania wartości z rekordu gdzie wartość zmiennej Nazwa
(u mnie Województwo
) ma wartość POLSKA
z sumą pozostałych rekordów przygotowowałem nową tabelę o nazwie ROLN_diff
. Warto zwrócić tu uwagę na łatwe i bardzo czytelne wykorzystanie nazw elementów wektora zwracanego prze funkcję colSums
użyte w prostym potoku colSums %>% t %>% as_tibble %>%
.
ROLN_diff = ROLN_3179_csv %>%
filter(Województwo=='POLSKA') %>%
select(where(is.numeric)) %>%
pivot_longer(everything(), values_to = 'POLSKA') %>%
left_join(
ROLN_3179_csv %>%
filter(Województwo!='POLSKA') %>%
select(where(is.numeric)) %>%
colSums %>% t %>% as_tibble %>%
pivot_longer(everything(), values_to = 'WOJEW'),
by = "name"
) %>% mutate(
is.diff = POLSKA!=WOJEW,
diff = abs(POLSKA-WOJEW),
diff.prop = paste((diff/POLSKA*100) %>% signif(3), "%"),
)
ROLN_diff %>% filter(is.diff) %>% kable1
name | POLSKA | WOJEW | is.diff | diff | diff.prop |
---|---|---|---|---|---|
pow_2006 | 228038 | 228039 | TRUE | 1 | 0.000439 % |
pow_2007 | 287529 | 287530 | TRUE | 1 | 0.000348 % |
pow_2008 | 314848 | 314852 | TRUE | 4 | 0.00127 % |
pow_2009 | 367062 | 367061 | TRUE | 1 | 0.000272 % |
pow_2010 | 519069 | 519070 | TRUE | 1 | 0.000193 % |
pow_2011 | 605520 | 605521 | TRUE | 1 | 0.000165 % |
pow_2012 | 661688 | 661686 | TRUE | 2 | 0.000302 % |
pow_2013 | 669970 | 669971 | TRUE | 1 | 0.000149 % |
pow_2015 | 580730 | 580731 | TRUE | 1 | 0.000172 % |
pow_2016 | 536579 | 536577 | TRUE | 2 | 0.000373 % |
pow_2017 | 494978 | 494977 | TRUE | 1 | 0.000202 % |
pow_2018 | 484677 | 484676 | TRUE | 1 | 0.000206 % |
Jak łatwo można zauważyć, różnice powstały w przypadku prawie wszystkich (nie licząc roku 2014) zmiennych dotyczących powierzchni gospodarstw i wynoszą najczęściej 1. Jest to na pewno spowodowane zaokrągleniami wartości które to musiało nastąpić podczas zapisywania danych do pliku csv.
Zapis tak wyliczonych porównań pomiędzy sumami nie nastręcza już większych problemów.
ROLN_diff %>% write_csv("pol.csv")
Podgląd zaś tego liku w RStudio ujawnia, że w tym przypadku nie trzeba się już przejmować żadnymi dodatkowymi kolumnami (brak deliminatora na końcach linii) i nie będzie najmniejszego problemu z wczytaniem tych danych do innych programów.
Import danych z pliku xlsx od razu rozpoczołem z użyciem dodatkowych opcji funkcji read_excel
. Jednak w przypadku pliku xlsx nie było już problemu z dodatkową pustą, 29-tą kolumną.
ROLN_3179_xlsx <-
read_excel(
"ROLN_3179.xlsx",
sheet = "TABLICA",
skip = 4,
col_names = c(
"Kod",
"Województwo",
paste0("gosp_", lata),
paste0("pow_", lata)
)
)
ROLN_3179_xlsx %>% kable2
Kod | Województwo | gosp_2006 | gosp_2007 | gosp_2008 | gosp_2009 | gosp_2010 | gosp_2011 | gosp_2012 | gosp_2013 | gosp_2014 | gosp_2015 | gosp_2016 | gosp_2017 | gosp_2018 | pow_2006 | pow_2007 | pow_2008 | pow_2009 | pow_2010 | pow_2011 | pow_2012 | pow_2013 | pow_2014 | pow_2015 | pow_2016 | pow_2017 | pow_2018 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000000 | POLSKA | 9187 | 11870 | 14896 | 17091 | 20582 | 23449 | 25944 | 26598 | 24829 | 22277 | 22435 | 20257 | 19207 | 228038.2 | 287528.6 | 314847.6 | 367062 | 519068.5 | 605519.6 | 661688 | 669970 | 657902 | 580730 | 536579 | 494978 | 484677 |
0200000 | DOLNOŚLĄSKIE | 481 | 652 | 879 | 1021 | 1227 | 1322 | 1312 | 1189 | 1046 | 849 | 813 | 741 | 713 | 19332.4 | 21987.7 | 28466.5 | 26427 | 39703.2 | 45546.5 | 44304 | 37455 | 37005 | 31261 | 29200 | 27542 | 27357 |
0400000 | KUJAWSKO-POMORSKIE | 173 | 217 | 258 | 279 | 327 | 371 | 390 | 415 | 401 | 363 | 470 | 419 | 395 | 4845.9 | 5884.4 | 5942.6 | 6826 | 7688.0 | 8376.0 | 8813 | 11152 | 11573 | 10645 | 9263 | 8331 | 7655 |
0600000 | LUBELSKIE | 1072 | 1402 | 1566 | 1710 | 1962 | 2065 | 2174 | 2129 | 1975 | 1825 | 1980 | 1904 | 1948 | 19956.6 | 23934.0 | 26891.9 | 30113 | 34854.6 | 34837.1 | 37466 | 40819 | 38467 | 34052 | 31343 | 29001 | 28428 |
0800000 | LUBUSKIE | 256 | 361 | 480 | 579 | 833 | 1081 | 1356 | 1422 | 1370 | 1202 | 1148 | 948 | 877 | 12093.8 | 18200.9 | 18206.5 | 22929 | 35796.8 | 44259.3 | 52581 | 54692 | 53300 | 46343 | 43235 | 37923 | 37174 |
1000000 | ŁÓDZKIE | 218 | 261 | 314 | 366 | 420 | 478 | 518 | 528 | 508 | 478 | 497 | 477 | 491 | 3378.3 | 3561.3 | 4828.5 | 5270 | 7671.2 | 8746.3 | 9908 | 10342 | 11229 | 10158 | 9986 | 9260 | 8905 |
1200000 | MAŁOPOLSKIE | 1363 | 1627 | 2100 | 2197 | 2156 | 2138 | 2103 | 1838 | 1378 | 1128 | 1093 | 934 | 770 | 13827.3 | 14481.2 | 22618.9 | 16488 | 21967.7 | 21395.8 | 21050 | 17005 | 15529 | 12976 | 12364 | 10691 | 8844 |
1400000 | MAZOWIECKIE | 1028 | 1215 | 1481 | 1673 | 1935 | 2140 | 2373 | 2609 | 2374 | 2147 | 2426 | 2215 | 2284 | 20877.8 | 23217.5 | 27742.3 | 34538 | 46229.4 | 50099.9 | 55804 | 63445 | 60354 | 53790 | 49517 | 44348 | 42049 |
1600000 | OPOLSKIE | 46 | 53 | 62 | 63 | 79 | 86 | 90 | 88 | 75 | 67 | 68 | 57 | 61 | 1195.9 | 934.0 | 1570.7 | 1879 | 3180.1 | 2702.9 | 2930 | 3543 | 3306 | 3042 | 3216 | 2790 | 3554 |
1800000 | PODKARPACKIE | 1164 | 1577 | 1892 | 2014 | 2091 | 2045 | 1940 | 1750 | 1475 | 1261 | 1252 | 1194 | 1131 | 20600.6 | 27046.7 | 28670.5 | 22593 | 31867.5 | 32358.5 | 30381 | 29506 | 23510 | 16656 | 15486 | 15349 | 13630 |
2000000 | PODLASKIE | 628 | 847 | 1160 | 1528 | 2033 | 2440 | 2924 | 3407 | 3432 | 3273 | 3437 | 3211 | 2989 | 11656.7 | 15391.0 | 20409.8 | 28764 | 42916.8 | 52065.9 | 56367 | 63548 | 64897 | 56528 | 55168 | 53551 | 51608 |
2200000 | POMORSKIE | 222 | 273 | 392 | 494 | 648 | 763 | 894 | 893 | 847 | 737 | 679 | 609 | 540 | 8037.2 | 10967.6 | 11366.0 | 14591 | 22554.0 | 27356.5 | 30615 | 28721 | 29282 | 24866 | 23328 | 22419 | 19974 |
2400000 | ŚLĄSKIE | 116 | 143 | 176 | 199 | 228 | 238 | 236 | 242 | 230 | 201 | 180 | 162 | 148 | 2340.0 | 3079.3 | 3934.5 | 3632 | 5738.9 | 6786.7 | 7125 | 7220 | 7788 | 6638 | 5324 | 3726 | 2951 |
2600000 | ŚWIĘTOKRZYSKIE | 892 | 995 | 1165 | 1170 | 1243 | 1296 | 1288 | 1207 | 992 | 853 | 834 | 740 | 680 | 8963.4 | 9824.1 | 10840.7 | 10647 | 13122.6 | 14301.0 | 14551 | 15122 | 13038 | 11598 | 10739 | 9970 | 9087 |
2800000 | WARMIŃSKO-MAZURSKIE | 586 | 773 | 1059 | 1514 | 2279 | 3033 | 3793 | 4235 | 4234 | 4041 | 4142 | 3745 | 3393 | 23990.8 | 28810.1 | 28791.0 | 49617 | 75241.9 | 98473.0 | 112945 | 116199 | 117097 | 112768 | 108667 | 107067 | 104574 |
3000000 | WIELKOPOLSKIE | 264 | 415 | 516 | 588 | 748 | 888 | 974 | 1006 | 966 | 809 | 843 | 736 | 727 | 14510.6 | 21095.6 | 20416.6 | 23770 | 32512.8 | 38434.3 | 41479 | 41617 | 42071 | 34523 | 29171 | 25389 | 25994 |
3200000 | ZACHODNIOPOMORSKIE | 678 | 1059 | 1396 | 1696 | 2373 | 3065 | 3579 | 3640 | 3526 | 3043 | 2573 | 2165 | 2060 | 42430.9 | 59113.5 | 54150.7 | 68977 | 98023.0 | 119779.9 | 135367 | 129585 | 129456 | 114887 | 100570 | 87620 | 92892 |
Podobnie jaw w przypadku danych pochodzących z pliku csv sprawdziłem zgodność sum. Do tego celu wykorzystałem ten sam kod co poprzednio zmieniając jedynie wejściową tabelę.
ROLN_diff = ROLN_3179_xlsx %>%
filter(Województwo=='POLSKA') %>%
select(where(is.numeric)) %>%
pivot_longer(everything(), values_to = 'POLSKA') %>%
left_join(
ROLN_3179_xlsx %>%
filter(Województwo!='POLSKA') %>%
select(where(is.numeric)) %>%
colSums %>% t %>% as_tibble %>%
pivot_longer(everything(), values_to = 'WOJEW'),
by = "name"
) %>% mutate(
is.diff = POLSKA!=WOJEW,
diff = abs(POLSKA-WOJEW),
diff.prop = paste((diff/POLSKA*100) %>% signif(3), "%"),
)
ROLN_diff %>% filter(is.diff) %>% kable1
name | POLSKA | WOJEW | is.diff | diff | diff.prop |
---|---|---|---|---|---|
pow_2007 | 287528.6 | 287528.9 | TRUE | 0.3 | 0.000104 % |
pow_2008 | 314847.6 | 314847.7 | TRUE | 0.1 | 3.18e-05 % |
pow_2009 | 367062.0 | 367061.0 | TRUE | 1.0 | 0.000272 % |
pow_2012 | 661688.0 | 661686.0 | TRUE | 2.0 | 0.000302 % |
pow_2013 | 669970.0 | 669971.0 | TRUE | 1.0 | 0.000149 % |
pow_2015 | 580730.0 | 580731.0 | TRUE | 1.0 | 0.000172 % |
pow_2016 | 536579.0 | 536577.0 | TRUE | 2.0 | 0.000373 % |
pow_2017 | 494978.0 | 494977.0 | TRUE | 1.0 | 0.000202 % |
pow_2018 | 484677.0 | 484676.0 | TRUE | 1.0 | 0.000206 % |
Również teraz można się przekonać, że występują różnice, choć są one nieco inne niż w przypadku danych pochodzących z pliku csv. Chociaż tym razem spodziewałem się, że w rekordzie podsumowującym (wierszu 5 arkusza TABLICA
) użyto standardowej funkcji suma
z programu Excel. Szybkie sprawdzenie zawartości tego pliku ujawniło, że żadna komórka tego wiersza nie zawiera funkcji a jedynie wpisane wartości.
OPIS
Import danych z arkusza OPIS
wykonałem przy użyciu tej samej metody jak w przypadku arkusza TABLICA
.
ROLN_OPIS <-
read_excel(
"ROLN_3179.xlsx",
sheet = "OPIS",
col_names = c("Typ", "Tekst")
)
ROLN_OPIS %>% kable2
Typ | Tekst |
---|---|
Kategoria: | ROLNICTWO |
NA | Dane o gruntach wykazano według form użytkowania. Prezentowane informacje dotyczą działalności rolniczej w zakresie produkcji roślinnej i zwierzęcej. Przez użytkowanie rozumie się faktyczne gospodarowanie na gruntach. Dane o powierzchni zasiewów dotyczą powierzchni upraw poszczególnych ziemiopłodów uprawianych w plonie głównym. |
Grupa: | GOSPODARSTWA ROLNE |
NA |
|
Podgrupa: | Ekologiczne gospodarstwa rolne |
NA | Ekologiczne gospodarstwa rolne (z certyfikatem) - Głównego Inspektoratu Jakości Handlowej Artykułów Rolno-Spożywczych. |
Data ostatniej aktualizacji: | 2019-10-03 |
Wymiary: | Rodzaje gospodarstw; Zakres przedmiotowy; Rok |
Przypisy: | Znak ‘-’ oznacza brak informacji z powodu: zmiany poziomu prezentacji, zmian wprowadzonych do wykazu jednostek terytorialnych lub modyfikacji listy cech w danym okresie sprawozdawczym |
Tekst
Do utworzenia listy unikalnych słów posłużyłem się, tak jak poprzednio wygodnym potokiem oraz funkcją str_match_all
z pakietu stringr
. Wcześniej jednak skorzystałem z bardzo przydatnej funkcji str_view_all
aby upewnić się wizualnie czy mój pattern
jest na pewno właściwy.
ROLN_OPIS %>%
pull(Tekst) %>%
paste(collapse = " ") %>%
str_to_lower %>%
str_view_all("([a-z,ą,ć,ę,ł,ń,ó,ś,ż,ź]+)")
Po analizie tego wyniku byłem pewien, że moje działania dadzą poprawny efekt i od razu mogłem zapisać wyniki do odpowiedniego pliku.
tibble(
słowa =
ROLN_OPIS %>%
pull(Tekst) %>%
paste(collapse = " ") %>%
str_to_lower %>%
str_match_all("([a-z,ą,ć,ę,ł,ń,ó,ś,ż,ź]+)")
) %>%
unnest(słowa) %>%
mutate(słowa = słowa[,1]) %>%
distinct(słowa) %>%
arrange(słowa) %>%
write_csv("słowa.txt", col_names = FALSE)
Dla pewności sprawdziłem jeszcze czy odczytane dane z pliku csv są takie same jak dane odczytane z pliku Excela.
ROLN_3179_csv %>% all_equal(ROLN_3179_xlsx) == TRUE
## [1] FALSE
Dane okazały się różne. Spróbowałem zatem zidentyfikować gdzie leży problem dokonując porównań w grupach zmiennych.
ROLN_3179_csv %>% select(Kod:Województwo) %>%
all_equal(ROLN_3179_xlsx %>% select(Kod:Województwo)) == TRUE
## [1] TRUE
ROLN_3179_csv %>% select(starts_with("gosp")) %>%
all_equal(ROLN_3179_xlsx %>% select(starts_with("gosp"))) == TRUE
## [1] TRUE
ROLN_3179_csv %>% select(starts_with("pow")) %>%
all_equal(ROLN_3179_xlsx %>% select(starts_with("pow"))) == TRUE
## [1] FALSE
Jak widać problem występuje w zmiennych dotyczących powierzchni. Szybka kontrola wartości wpisanych do komórek Excela ujawniła przyczynę. W kolumnach z wartościami powierzchni w niektórych rekordach wpisane były wartości z dziesiętnymi częściami hektara. Jednak zaokrąglanie Excel jest nie zgodne z normą IEC 60559. Aby się o tym przekonać przygotowałem specjalną funkcję round0
zaokrąglająca wartości wektora x
niezgodnie z normą IEC 60559 a zgodnie z metodą zaokrąglania stosowaną w Excel.
round0 = function(x) ifelse(x-trunc(x)>=0.5,trunc(x)+1,trunc(x))
ROLN_3179_csv %>% select(starts_with("pow")) %>%
all_equal(ROLN_3179_xlsx %>%
mutate_at(vars(starts_with("pow")), round) %>%
select(starts_with("pow"))) == TRUE
## [1] FALSE
ROLN_3179_csv %>% select(starts_with("pow")) %>%
all_equal(ROLN_3179_xlsx %>%
mutate_at(vars(starts_with("pow")), round0) %>%
select(starts_with("pow"))) == TRUE
## [1] TRUE
Zastosowanie podstawowej funkcji języka R round
identyfikowało różnice pomiędzy danymi. Dopiero zastosowanie własnej funkcji round0
dało pełną zgodność danych. Ostatecznie do dalszych obliczeń zdecydowałem się pozostawić wartości odczytane z pliku Excel ze względu na minimalnie lepszą dokładność usuwając jedynie podsumowanie dotyczące całego kraju.
ROLN_3179 = ROLN_3179_xlsx %>%
filter(Województwo!="POLSKA")
ROLN_3179 %>% kable2
Kod | Województwo | gosp_2006 | gosp_2007 | gosp_2008 | gosp_2009 | gosp_2010 | gosp_2011 | gosp_2012 | gosp_2013 | gosp_2014 | gosp_2015 | gosp_2016 | gosp_2017 | gosp_2018 | pow_2006 | pow_2007 | pow_2008 | pow_2009 | pow_2010 | pow_2011 | pow_2012 | pow_2013 | pow_2014 | pow_2015 | pow_2016 | pow_2017 | pow_2018 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0200000 | DOLNOŚLĄSKIE | 481 | 652 | 879 | 1021 | 1227 | 1322 | 1312 | 1189 | 1046 | 849 | 813 | 741 | 713 | 19332.4 | 21987.7 | 28466.5 | 26427 | 39703.2 | 45546.5 | 44304 | 37455 | 37005 | 31261 | 29200 | 27542 | 27357 |
0400000 | KUJAWSKO-POMORSKIE | 173 | 217 | 258 | 279 | 327 | 371 | 390 | 415 | 401 | 363 | 470 | 419 | 395 | 4845.9 | 5884.4 | 5942.6 | 6826 | 7688.0 | 8376.0 | 8813 | 11152 | 11573 | 10645 | 9263 | 8331 | 7655 |
0600000 | LUBELSKIE | 1072 | 1402 | 1566 | 1710 | 1962 | 2065 | 2174 | 2129 | 1975 | 1825 | 1980 | 1904 | 1948 | 19956.6 | 23934.0 | 26891.9 | 30113 | 34854.6 | 34837.1 | 37466 | 40819 | 38467 | 34052 | 31343 | 29001 | 28428 |
0800000 | LUBUSKIE | 256 | 361 | 480 | 579 | 833 | 1081 | 1356 | 1422 | 1370 | 1202 | 1148 | 948 | 877 | 12093.8 | 18200.9 | 18206.5 | 22929 | 35796.8 | 44259.3 | 52581 | 54692 | 53300 | 46343 | 43235 | 37923 | 37174 |
1000000 | ŁÓDZKIE | 218 | 261 | 314 | 366 | 420 | 478 | 518 | 528 | 508 | 478 | 497 | 477 | 491 | 3378.3 | 3561.3 | 4828.5 | 5270 | 7671.2 | 8746.3 | 9908 | 10342 | 11229 | 10158 | 9986 | 9260 | 8905 |
1200000 | MAŁOPOLSKIE | 1363 | 1627 | 2100 | 2197 | 2156 | 2138 | 2103 | 1838 | 1378 | 1128 | 1093 | 934 | 770 | 13827.3 | 14481.2 | 22618.9 | 16488 | 21967.7 | 21395.8 | 21050 | 17005 | 15529 | 12976 | 12364 | 10691 | 8844 |
1400000 | MAZOWIECKIE | 1028 | 1215 | 1481 | 1673 | 1935 | 2140 | 2373 | 2609 | 2374 | 2147 | 2426 | 2215 | 2284 | 20877.8 | 23217.5 | 27742.3 | 34538 | 46229.4 | 50099.9 | 55804 | 63445 | 60354 | 53790 | 49517 | 44348 | 42049 |
1600000 | OPOLSKIE | 46 | 53 | 62 | 63 | 79 | 86 | 90 | 88 | 75 | 67 | 68 | 57 | 61 | 1195.9 | 934.0 | 1570.7 | 1879 | 3180.1 | 2702.9 | 2930 | 3543 | 3306 | 3042 | 3216 | 2790 | 3554 |
1800000 | PODKARPACKIE | 1164 | 1577 | 1892 | 2014 | 2091 | 2045 | 1940 | 1750 | 1475 | 1261 | 1252 | 1194 | 1131 | 20600.6 | 27046.7 | 28670.5 | 22593 | 31867.5 | 32358.5 | 30381 | 29506 | 23510 | 16656 | 15486 | 15349 | 13630 |
2000000 | PODLASKIE | 628 | 847 | 1160 | 1528 | 2033 | 2440 | 2924 | 3407 | 3432 | 3273 | 3437 | 3211 | 2989 | 11656.7 | 15391.0 | 20409.8 | 28764 | 42916.8 | 52065.9 | 56367 | 63548 | 64897 | 56528 | 55168 | 53551 | 51608 |
2200000 | POMORSKIE | 222 | 273 | 392 | 494 | 648 | 763 | 894 | 893 | 847 | 737 | 679 | 609 | 540 | 8037.2 | 10967.6 | 11366.0 | 14591 | 22554.0 | 27356.5 | 30615 | 28721 | 29282 | 24866 | 23328 | 22419 | 19974 |
2400000 | ŚLĄSKIE | 116 | 143 | 176 | 199 | 228 | 238 | 236 | 242 | 230 | 201 | 180 | 162 | 148 | 2340.0 | 3079.3 | 3934.5 | 3632 | 5738.9 | 6786.7 | 7125 | 7220 | 7788 | 6638 | 5324 | 3726 | 2951 |
2600000 | ŚWIĘTOKRZYSKIE | 892 | 995 | 1165 | 1170 | 1243 | 1296 | 1288 | 1207 | 992 | 853 | 834 | 740 | 680 | 8963.4 | 9824.1 | 10840.7 | 10647 | 13122.6 | 14301.0 | 14551 | 15122 | 13038 | 11598 | 10739 | 9970 | 9087 |
2800000 | WARMIŃSKO-MAZURSKIE | 586 | 773 | 1059 | 1514 | 2279 | 3033 | 3793 | 4235 | 4234 | 4041 | 4142 | 3745 | 3393 | 23990.8 | 28810.1 | 28791.0 | 49617 | 75241.9 | 98473.0 | 112945 | 116199 | 117097 | 112768 | 108667 | 107067 | 104574 |
3000000 | WIELKOPOLSKIE | 264 | 415 | 516 | 588 | 748 | 888 | 974 | 1006 | 966 | 809 | 843 | 736 | 727 | 14510.6 | 21095.6 | 20416.6 | 23770 | 32512.8 | 38434.3 | 41479 | 41617 | 42071 | 34523 | 29171 | 25389 | 25994 |
3200000 | ZACHODNIOPOMORSKIE | 678 | 1059 | 1396 | 1696 | 2373 | 3065 | 3579 | 3640 | 3526 | 3043 | 2573 | 2165 | 2060 | 42430.9 | 59113.5 | 54150.7 | 68977 | 98023.0 | 119779.9 | 135367 | 129585 | 129456 | 114887 | 100570 | 87620 | 92892 |
Po wczytaniu danych warto na nich wykonać choć prostą walidację. Użyłem do tego celu funkcji z pakietu validate
. Najpierw wykonałem szybką walidację zmiennych Kod
oraz Województwo
.
ROLN_3179 %>%
select(Kod, Województwo) %>%
confront(
validator(
char.val.Kod = is.character(Kod),
char.val.Woj = is.character(Województwo),
NA.val = !is.na(.)
)
) %>% summary %>% kable1
name | items | passes | fails | nNA | error | warning | expression |
---|---|---|---|---|---|---|---|
char.val.Kod | 1 | 1 | 0 | 0 | FALSE | FALSE | is.character(Kod) |
char.val.Woj | 1 | 1 | 0 | 0 | FALSE | FALSE | is.character(Województwo) |
NA.val | 32 | 32 | 0 | 0 | FALSE | FALSE | !is.na(.) |
Pierwsza walidacja przeszła pomyślnie. Jednak przed walidacją pozostałych zmiennych zdecydowałem już teraz przekonwertować dalszą cześć tabeli do postaci długiej, która będzie znacznie bardziej praktyczna do dalszych analiz.
Jak można się było przekonać, w zadaniu mamy do czynienia z dwoma szeregami czasowymi (jeden dotyczący gospodarstw i drugi dotyczący powierzchni użytków rolnych). Znacznie prościej będzie operować tymi danymi kiedy przekształcimy je do postaci długiej. Przy okazji zmieniłem także typ wcześniej walidowanym zmiennym Kod
i Województwo
na typ factor
.
ROLN_3179 = ROLN_3179 %>%
pivot_longer(gosp_2006:pow_2018, names_to = c("name", "rok"),
names_pattern = "(^[a-z]*)_(\\d*)") %>%
pivot_wider() %>%
rename(gospodarstwa = gosp,
powierzchnia = pow) %>%
mutate(Kod = Kod %>% fct_inorder,
Województwo = Województwo %>% fct_inorder,
rok = rok %>% as.integer)
ROLN_3179 %>% kable2
Kod | Województwo | rok | gospodarstwa | powierzchnia |
---|---|---|---|---|
0200000 | DOLNOŚLĄSKIE | 2006 | 481 | 19332.4 |
0200000 | DOLNOŚLĄSKIE | 2007 | 652 | 21987.7 |
0200000 | DOLNOŚLĄSKIE | 2008 | 879 | 28466.5 |
0200000 | DOLNOŚLĄSKIE | 2009 | 1021 | 26427.0 |
0200000 | DOLNOŚLĄSKIE | 2010 | 1227 | 39703.2 |
0200000 | DOLNOŚLĄSKIE | 2011 | 1322 | 45546.5 |
0200000 | DOLNOŚLĄSKIE | 2012 | 1312 | 44304.0 |
0200000 | DOLNOŚLĄSKIE | 2013 | 1189 | 37455.0 |
0200000 | DOLNOŚLĄSKIE | 2014 | 1046 | 37005.0 |
0200000 | DOLNOŚLĄSKIE | 2015 | 849 | 31261.0 |
0200000 | DOLNOŚLĄSKIE | 2016 | 813 | 29200.0 |
0200000 | DOLNOŚLĄSKIE | 2017 | 741 | 27542.0 |
0200000 | DOLNOŚLĄSKIE | 2018 | 713 | 27357.0 |
0400000 | KUJAWSKO-POMORSKIE | 2006 | 173 | 4845.9 |
0400000 | KUJAWSKO-POMORSKIE | 2007 | 217 | 5884.4 |
0400000 | KUJAWSKO-POMORSKIE | 2008 | 258 | 5942.6 |
0400000 | KUJAWSKO-POMORSKIE | 2009 | 279 | 6826.0 |
0400000 | KUJAWSKO-POMORSKIE | 2010 | 327 | 7688.0 |
0400000 | KUJAWSKO-POMORSKIE | 2011 | 371 | 8376.0 |
0400000 | KUJAWSKO-POMORSKIE | 2012 | 390 | 8813.0 |
0400000 | KUJAWSKO-POMORSKIE | 2013 | 415 | 11152.0 |
0400000 | KUJAWSKO-POMORSKIE | 2014 | 401 | 11573.0 |
0400000 | KUJAWSKO-POMORSKIE | 2015 | 363 | 10645.0 |
0400000 | KUJAWSKO-POMORSKIE | 2016 | 470 | 9263.0 |
0400000 | KUJAWSKO-POMORSKIE | 2017 | 419 | 8331.0 |
0400000 | KUJAWSKO-POMORSKIE | 2018 | 395 | 7655.0 |
0600000 | LUBELSKIE | 2006 | 1072 | 19956.6 |
0600000 | LUBELSKIE | 2007 | 1402 | 23934.0 |
0600000 | LUBELSKIE | 2008 | 1566 | 26891.9 |
0600000 | LUBELSKIE | 2009 | 1710 | 30113.0 |
0600000 | LUBELSKIE | 2010 | 1962 | 34854.6 |
0600000 | LUBELSKIE | 2011 | 2065 | 34837.1 |
0600000 | LUBELSKIE | 2012 | 2174 | 37466.0 |
0600000 | LUBELSKIE | 2013 | 2129 | 40819.0 |
0600000 | LUBELSKIE | 2014 | 1975 | 38467.0 |
0600000 | LUBELSKIE | 2015 | 1825 | 34052.0 |
0600000 | LUBELSKIE | 2016 | 1980 | 31343.0 |
0600000 | LUBELSKIE | 2017 | 1904 | 29001.0 |
0600000 | LUBELSKIE | 2018 | 1948 | 28428.0 |
0800000 | LUBUSKIE | 2006 | 256 | 12093.8 |
0800000 | LUBUSKIE | 2007 | 361 | 18200.9 |
0800000 | LUBUSKIE | 2008 | 480 | 18206.5 |
0800000 | LUBUSKIE | 2009 | 579 | 22929.0 |
0800000 | LUBUSKIE | 2010 | 833 | 35796.8 |
0800000 | LUBUSKIE | 2011 | 1081 | 44259.3 |
0800000 | LUBUSKIE | 2012 | 1356 | 52581.0 |
0800000 | LUBUSKIE | 2013 | 1422 | 54692.0 |
0800000 | LUBUSKIE | 2014 | 1370 | 53300.0 |
0800000 | LUBUSKIE | 2015 | 1202 | 46343.0 |
0800000 | LUBUSKIE | 2016 | 1148 | 43235.0 |
0800000 | LUBUSKIE | 2017 | 948 | 37923.0 |
0800000 | LUBUSKIE | 2018 | 877 | 37174.0 |
1000000 | ŁÓDZKIE | 2006 | 218 | 3378.3 |
1000000 | ŁÓDZKIE | 2007 | 261 | 3561.3 |
1000000 | ŁÓDZKIE | 2008 | 314 | 4828.5 |
1000000 | ŁÓDZKIE | 2009 | 366 | 5270.0 |
1000000 | ŁÓDZKIE | 2010 | 420 | 7671.2 |
1000000 | ŁÓDZKIE | 2011 | 478 | 8746.3 |
1000000 | ŁÓDZKIE | 2012 | 518 | 9908.0 |
1000000 | ŁÓDZKIE | 2013 | 528 | 10342.0 |
1000000 | ŁÓDZKIE | 2014 | 508 | 11229.0 |
1000000 | ŁÓDZKIE | 2015 | 478 | 10158.0 |
1000000 | ŁÓDZKIE | 2016 | 497 | 9986.0 |
1000000 | ŁÓDZKIE | 2017 | 477 | 9260.0 |
1000000 | ŁÓDZKIE | 2018 | 491 | 8905.0 |
1200000 | MAŁOPOLSKIE | 2006 | 1363 | 13827.3 |
1200000 | MAŁOPOLSKIE | 2007 | 1627 | 14481.2 |
1200000 | MAŁOPOLSKIE | 2008 | 2100 | 22618.9 |
1200000 | MAŁOPOLSKIE | 2009 | 2197 | 16488.0 |
1200000 | MAŁOPOLSKIE | 2010 | 2156 | 21967.7 |
1200000 | MAŁOPOLSKIE | 2011 | 2138 | 21395.8 |
1200000 | MAŁOPOLSKIE | 2012 | 2103 | 21050.0 |
1200000 | MAŁOPOLSKIE | 2013 | 1838 | 17005.0 |
1200000 | MAŁOPOLSKIE | 2014 | 1378 | 15529.0 |
1200000 | MAŁOPOLSKIE | 2015 | 1128 | 12976.0 |
1200000 | MAŁOPOLSKIE | 2016 | 1093 | 12364.0 |
1200000 | MAŁOPOLSKIE | 2017 | 934 | 10691.0 |
1200000 | MAŁOPOLSKIE | 2018 | 770 | 8844.0 |
1400000 | MAZOWIECKIE | 2006 | 1028 | 20877.8 |
1400000 | MAZOWIECKIE | 2007 | 1215 | 23217.5 |
1400000 | MAZOWIECKIE | 2008 | 1481 | 27742.3 |
1400000 | MAZOWIECKIE | 2009 | 1673 | 34538.0 |
1400000 | MAZOWIECKIE | 2010 | 1935 | 46229.4 |
1400000 | MAZOWIECKIE | 2011 | 2140 | 50099.9 |
1400000 | MAZOWIECKIE | 2012 | 2373 | 55804.0 |
1400000 | MAZOWIECKIE | 2013 | 2609 | 63445.0 |
1400000 | MAZOWIECKIE | 2014 | 2374 | 60354.0 |
1400000 | MAZOWIECKIE | 2015 | 2147 | 53790.0 |
1400000 | MAZOWIECKIE | 2016 | 2426 | 49517.0 |
1400000 | MAZOWIECKIE | 2017 | 2215 | 44348.0 |
1400000 | MAZOWIECKIE | 2018 | 2284 | 42049.0 |
1600000 | OPOLSKIE | 2006 | 46 | 1195.9 |
1600000 | OPOLSKIE | 2007 | 53 | 934.0 |
1600000 | OPOLSKIE | 2008 | 62 | 1570.7 |
1600000 | OPOLSKIE | 2009 | 63 | 1879.0 |
1600000 | OPOLSKIE | 2010 | 79 | 3180.1 |
1600000 | OPOLSKIE | 2011 | 86 | 2702.9 |
1600000 | OPOLSKIE | 2012 | 90 | 2930.0 |
1600000 | OPOLSKIE | 2013 | 88 | 3543.0 |
1600000 | OPOLSKIE | 2014 | 75 | 3306.0 |
1600000 | OPOLSKIE | 2015 | 67 | 3042.0 |
1600000 | OPOLSKIE | 2016 | 68 | 3216.0 |
1600000 | OPOLSKIE | 2017 | 57 | 2790.0 |
1600000 | OPOLSKIE | 2018 | 61 | 3554.0 |
1800000 | PODKARPACKIE | 2006 | 1164 | 20600.6 |
1800000 | PODKARPACKIE | 2007 | 1577 | 27046.7 |
1800000 | PODKARPACKIE | 2008 | 1892 | 28670.5 |
1800000 | PODKARPACKIE | 2009 | 2014 | 22593.0 |
1800000 | PODKARPACKIE | 2010 | 2091 | 31867.5 |
1800000 | PODKARPACKIE | 2011 | 2045 | 32358.5 |
1800000 | PODKARPACKIE | 2012 | 1940 | 30381.0 |
1800000 | PODKARPACKIE | 2013 | 1750 | 29506.0 |
1800000 | PODKARPACKIE | 2014 | 1475 | 23510.0 |
1800000 | PODKARPACKIE | 2015 | 1261 | 16656.0 |
1800000 | PODKARPACKIE | 2016 | 1252 | 15486.0 |
1800000 | PODKARPACKIE | 2017 | 1194 | 15349.0 |
1800000 | PODKARPACKIE | 2018 | 1131 | 13630.0 |
2000000 | PODLASKIE | 2006 | 628 | 11656.7 |
2000000 | PODLASKIE | 2007 | 847 | 15391.0 |
2000000 | PODLASKIE | 2008 | 1160 | 20409.8 |
2000000 | PODLASKIE | 2009 | 1528 | 28764.0 |
2000000 | PODLASKIE | 2010 | 2033 | 42916.8 |
2000000 | PODLASKIE | 2011 | 2440 | 52065.9 |
2000000 | PODLASKIE | 2012 | 2924 | 56367.0 |
2000000 | PODLASKIE | 2013 | 3407 | 63548.0 |
2000000 | PODLASKIE | 2014 | 3432 | 64897.0 |
2000000 | PODLASKIE | 2015 | 3273 | 56528.0 |
2000000 | PODLASKIE | 2016 | 3437 | 55168.0 |
2000000 | PODLASKIE | 2017 | 3211 | 53551.0 |
2000000 | PODLASKIE | 2018 | 2989 | 51608.0 |
2200000 | POMORSKIE | 2006 | 222 | 8037.2 |
2200000 | POMORSKIE | 2007 | 273 | 10967.6 |
2200000 | POMORSKIE | 2008 | 392 | 11366.0 |
2200000 | POMORSKIE | 2009 | 494 | 14591.0 |
2200000 | POMORSKIE | 2010 | 648 | 22554.0 |
2200000 | POMORSKIE | 2011 | 763 | 27356.5 |
2200000 | POMORSKIE | 2012 | 894 | 30615.0 |
2200000 | POMORSKIE | 2013 | 893 | 28721.0 |
2200000 | POMORSKIE | 2014 | 847 | 29282.0 |
2200000 | POMORSKIE | 2015 | 737 | 24866.0 |
2200000 | POMORSKIE | 2016 | 679 | 23328.0 |
2200000 | POMORSKIE | 2017 | 609 | 22419.0 |
2200000 | POMORSKIE | 2018 | 540 | 19974.0 |
2400000 | ŚLĄSKIE | 2006 | 116 | 2340.0 |
2400000 | ŚLĄSKIE | 2007 | 143 | 3079.3 |
2400000 | ŚLĄSKIE | 2008 | 176 | 3934.5 |
2400000 | ŚLĄSKIE | 2009 | 199 | 3632.0 |
2400000 | ŚLĄSKIE | 2010 | 228 | 5738.9 |
2400000 | ŚLĄSKIE | 2011 | 238 | 6786.7 |
2400000 | ŚLĄSKIE | 2012 | 236 | 7125.0 |
2400000 | ŚLĄSKIE | 2013 | 242 | 7220.0 |
2400000 | ŚLĄSKIE | 2014 | 230 | 7788.0 |
2400000 | ŚLĄSKIE | 2015 | 201 | 6638.0 |
2400000 | ŚLĄSKIE | 2016 | 180 | 5324.0 |
2400000 | ŚLĄSKIE | 2017 | 162 | 3726.0 |
2400000 | ŚLĄSKIE | 2018 | 148 | 2951.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2006 | 892 | 8963.4 |
2600000 | ŚWIĘTOKRZYSKIE | 2007 | 995 | 9824.1 |
2600000 | ŚWIĘTOKRZYSKIE | 2008 | 1165 | 10840.7 |
2600000 | ŚWIĘTOKRZYSKIE | 2009 | 1170 | 10647.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2010 | 1243 | 13122.6 |
2600000 | ŚWIĘTOKRZYSKIE | 2011 | 1296 | 14301.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2012 | 1288 | 14551.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2013 | 1207 | 15122.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2014 | 992 | 13038.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2015 | 853 | 11598.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2016 | 834 | 10739.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2017 | 740 | 9970.0 |
2600000 | ŚWIĘTOKRZYSKIE | 2018 | 680 | 9087.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2006 | 586 | 23990.8 |
2800000 | WARMIŃSKO-MAZURSKIE | 2007 | 773 | 28810.1 |
2800000 | WARMIŃSKO-MAZURSKIE | 2008 | 1059 | 28791.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2009 | 1514 | 49617.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2010 | 2279 | 75241.9 |
2800000 | WARMIŃSKO-MAZURSKIE | 2011 | 3033 | 98473.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2012 | 3793 | 112945.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2013 | 4235 | 116199.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2014 | 4234 | 117097.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2015 | 4041 | 112768.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2016 | 4142 | 108667.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2017 | 3745 | 107067.0 |
2800000 | WARMIŃSKO-MAZURSKIE | 2018 | 3393 | 104574.0 |
3000000 | WIELKOPOLSKIE | 2006 | 264 | 14510.6 |
3000000 | WIELKOPOLSKIE | 2007 | 415 | 21095.6 |
3000000 | WIELKOPOLSKIE | 2008 | 516 | 20416.6 |
3000000 | WIELKOPOLSKIE | 2009 | 588 | 23770.0 |
3000000 | WIELKOPOLSKIE | 2010 | 748 | 32512.8 |
3000000 | WIELKOPOLSKIE | 2011 | 888 | 38434.3 |
3000000 | WIELKOPOLSKIE | 2012 | 974 | 41479.0 |
3000000 | WIELKOPOLSKIE | 2013 | 1006 | 41617.0 |
3000000 | WIELKOPOLSKIE | 2014 | 966 | 42071.0 |
3000000 | WIELKOPOLSKIE | 2015 | 809 | 34523.0 |
3000000 | WIELKOPOLSKIE | 2016 | 843 | 29171.0 |
3000000 | WIELKOPOLSKIE | 2017 | 736 | 25389.0 |
3000000 | WIELKOPOLSKIE | 2018 | 727 | 25994.0 |
3200000 | ZACHODNIOPOMORSKIE | 2006 | 678 | 42430.9 |
3200000 | ZACHODNIOPOMORSKIE | 2007 | 1059 | 59113.5 |
3200000 | ZACHODNIOPOMORSKIE | 2008 | 1396 | 54150.7 |
3200000 | ZACHODNIOPOMORSKIE | 2009 | 1696 | 68977.0 |
3200000 | ZACHODNIOPOMORSKIE | 2010 | 2373 | 98023.0 |
3200000 | ZACHODNIOPOMORSKIE | 2011 | 3065 | 119779.9 |
3200000 | ZACHODNIOPOMORSKIE | 2012 | 3579 | 135367.0 |
3200000 | ZACHODNIOPOMORSKIE | 2013 | 3640 | 129585.0 |
3200000 | ZACHODNIOPOMORSKIE | 2014 | 3526 | 129456.0 |
3200000 | ZACHODNIOPOMORSKIE | 2015 | 3043 | 114887.0 |
3200000 | ZACHODNIOPOMORSKIE | 2016 | 2573 | 100570.0 |
3200000 | ZACHODNIOPOMORSKIE | 2017 | 2165 | 87620.0 |
3200000 | ZACHODNIOPOMORSKIE | 2018 | 2060 | 92892.0 |
numeric
Po tych przygotowaniach mogłem już przystąpić do walidacji moich nowych zmiennych gospodarstwa
oraz powierzchnia
.
ROLN_3179 %>%
confront(
validator(
num.val = is.numeric(gospodarstwa),
big.val = gospodarstwa>0 & gospodarstwa<10000,
NA.val = !is.na(gospodarstwa)
)
) %>% summary %>% kable1
name | items | passes | fails | nNA | error | warning | expression |
---|---|---|---|---|---|---|---|
num.val | 1 | 1 | 0 | 0 | FALSE | FALSE | is.numeric(gospodarstwa) |
big.val | 208 | 208 | 0 | 0 | FALSE | FALSE | gospodarstwa > 0 & gospodarstwa < 10000 |
NA.val | 208 | 208 | 0 | 0 | FALSE | FALSE | !is.na(gospodarstwa) |
ROLN_3179 %>%
confront(
validator(
num.val = is.numeric(powierzchnia),
big.val = powierzchnia>0 & powierzchnia<1000000,
NA.val = !is.na(powierzchnia)
)
) %>% summary %>% kable1
name | items | passes | fails | nNA | error | warning | expression |
---|---|---|---|---|---|---|---|
num.val | 1 | 1 | 0 | 0 | FALSE | FALSE | is.numeric(powierzchnia) |
big.val | 208 | 208 | 0 | 0 | FALSE | FALSE | powierzchnia > 0 & powierzchnia < 1e+06 |
NA.val | 208 | 208 | 0 | 0 | FALSE | FALSE | !is.na(powierzchnia) |
W ten sposób przekonałem się, że całe dane spełniają moje założenia walidacyjne i nadają się do dalszych przekształceń oraz analiz.
Na zakończenie pozostało mi już tylko wyliczenia średniej wielkości gospodarstwa rolnego, co wymagało jednej prostej mutacji do nowej zmiennej gospodarstwo
.
ROLN_3179 = ROLN_3179 %>%
mutate(gospodarstwo = powierzchnia/gospodarstwa)
ROLN_3179 %>% mutate_if(is.numeric, round, dig=2) %>% kable2
Kod | Województwo | rok | gospodarstwa | powierzchnia | gospodarstwo |
---|---|---|---|---|---|
0200000 | DOLNOŚLĄSKIE | 2006 | 481 | 19332.4 | 40.19 |
0200000 | DOLNOŚLĄSKIE | 2007 | 652 | 21987.7 | 33.72 |
0200000 | DOLNOŚLĄSKIE | 2008 | 879 | 28466.5 | 32.39 |
0200000 | DOLNOŚLĄSKIE | 2009 | 1021 | 26427.0 | 25.88 |
0200000 | DOLNOŚLĄSKIE | 2010 | 1227 | 39703.2 | 32.36 |
0200000 | DOLNOŚLĄSKIE | 2011 | 1322 | 45546.5 | 34.45 |
0200000 | DOLNOŚLĄSKIE | 2012 | 1312 | 44304.0 | 33.77 |
0200000 | DOLNOŚLĄSKIE | 2013 | 1189 | 37455.0 | 31.50 |
0200000 | DOLNOŚLĄSKIE | 2014 | 1046 | 37005.0 | 35.38 |
0200000 | DOLNOŚLĄSKIE | 2015 | 849 | 31261.0 | 36.82 |
0200000 | DOLNOŚLĄSKIE | 2016 | 813 | 29200.0 | 35.92 |
0200000 | DOLNOŚLĄSKIE | 2017 | 741 | 27542.0 | 37.17 |
0200000 | DOLNOŚLĄSKIE | 2018 | 713 | 27357.0 | 38.37 |
0400000 | KUJAWSKO-POMORSKIE | 2006 | 173 | 4845.9 | 28.01 |
0400000 | KUJAWSKO-POMORSKIE | 2007 | 217 | 5884.4 | 27.12 |
0400000 | KUJAWSKO-POMORSKIE | 2008 | 258 | 5942.6 | 23.03 |
0400000 | KUJAWSKO-POMORSKIE | 2009 | 279 | 6826.0 | 24.47 |
0400000 | KUJAWSKO-POMORSKIE | 2010 | 327 | 7688.0 | 23.51 |
0400000 | KUJAWSKO-POMORSKIE | 2011 | 371 | 8376.0 | 22.58 |
0400000 | KUJAWSKO-POMORSKIE | 2012 | 390 | 8813.0 | 22.60 |
0400000 | KUJAWSKO-POMORSKIE | 2013 | 415 | 11152.0 | 26.87 |
0400000 | KUJAWSKO-POMORSKIE | 2014 | 401 | 11573.0 | 28.86 |
0400000 | KUJAWSKO-POMORSKIE | 2015 | 363 | 10645.0 | 29.33 |
0400000 | KUJAWSKO-POMORSKIE | 2016 | 470 | 9263.0 | 19.71 |
0400000 | KUJAWSKO-POMORSKIE | 2017 | 419 | 8331.0 | 19.88 |
0400000 | KUJAWSKO-POMORSKIE | 2018 | 395 | 7655.0 | 19.38 |
0600000 | LUBELSKIE | 2006 | 1072 | 19956.6 | 18.62 |
0600000 | LUBELSKIE | 2007 | 1402 | 23934.0 | 17.07 |
0600000 | LUBELSKIE | 2008 | 1566 | 26891.9 | 17.17 |
0600000 | LUBELSKIE | 2009 | 1710 | 30113.0 | 17.61 |
0600000 | LUBELSKIE | 2010 | 1962 | 34854.6 | 17.76 |
0600000 | LUBELSKIE | 2011 | 2065 | 34837.1 | 16.87 |
0600000 | LUBELSKIE | 2012 | 2174 | 37466.0 | 17.23 |
0600000 | LUBELSKIE | 2013 | 2129 | 40819.0 | 19.17 |
0600000 | LUBELSKIE | 2014 | 1975 | 38467.0 | 19.48 |
0600000 | LUBELSKIE | 2015 | 1825 | 34052.0 | 18.66 |
0600000 | LUBELSKIE | 2016 | 1980 | 31343.0 | 15.83 |
0600000 | LUBELSKIE | 2017 | 1904 | 29001.0 | 15.23 |
0600000 | LUBELSKIE | 2018 | 1948 | 28428.0 | 14.59 |
0800000 | LUBUSKIE | 2006 | 256 | 12093.8 | 47.24 |
0800000 | LUBUSKIE | 2007 | 361 | 18200.9 | 50.42 |
0800000 | LUBUSKIE | 2008 | 480 | 18206.5 | 37.93 |
0800000 | LUBUSKIE | 2009 | 579 | 22929.0 | 39.60 |
0800000 | LUBUSKIE | 2010 | 833 | 35796.8 | 42.97 |
0800000 | LUBUSKIE | 2011 | 1081 | 44259.3 | 40.94 |
0800000 | LUBUSKIE | 2012 | 1356 | 52581.0 | 38.78 |
0800000 | LUBUSKIE | 2013 | 1422 | 54692.0 | 38.46 |
0800000 | LUBUSKIE | 2014 | 1370 | 53300.0 | 38.91 |
0800000 | LUBUSKIE | 2015 | 1202 | 46343.0 | 38.55 |
0800000 | LUBUSKIE | 2016 | 1148 | 43235.0 | 37.66 |
0800000 | LUBUSKIE | 2017 | 948 | 37923.0 | 40.00 |
0800000 | LUBUSKIE | 2018 | 877 | 37174.0 | 42.39 |
1000000 | ŁÓDZKIE | 2006 | 218 | 3378.3 | 15.50 |
1000000 | ŁÓDZKIE | 2007 | 261 | 3561.3 | 13.64 |
1000000 | ŁÓDZKIE | 2008 | 314 | 4828.5 | 15.38 |
1000000 | ŁÓDZKIE | 2009 | 366 | 5270.0 | 14.40 |
1000000 | ŁÓDZKIE | 2010 | 420 | 7671.2 | 18.26 |
1000000 | ŁÓDZKIE | 2011 | 478 | 8746.3 | 18.30 |
1000000 | ŁÓDZKIE | 2012 | 518 | 9908.0 | 19.13 |
1000000 | ŁÓDZKIE | 2013 | 528 | 10342.0 | 19.59 |
1000000 | ŁÓDZKIE | 2014 | 508 | 11229.0 | 22.10 |
1000000 | ŁÓDZKIE | 2015 | 478 | 10158.0 | 21.25 |
1000000 | ŁÓDZKIE | 2016 | 497 | 9986.0 | 20.09 |
1000000 | ŁÓDZKIE | 2017 | 477 | 9260.0 | 19.41 |
1000000 | ŁÓDZKIE | 2018 | 491 | 8905.0 | 18.14 |
1200000 | MAŁOPOLSKIE | 2006 | 1363 | 13827.3 | 10.14 |
1200000 | MAŁOPOLSKIE | 2007 | 1627 | 14481.2 | 8.90 |
1200000 | MAŁOPOLSKIE | 2008 | 2100 | 22618.9 | 10.77 |
1200000 | MAŁOPOLSKIE | 2009 | 2197 | 16488.0 | 7.50 |
1200000 | MAŁOPOLSKIE | 2010 | 2156 | 21967.7 | 10.19 |
1200000 | MAŁOPOLSKIE | 2011 | 2138 | 21395.8 | 10.01 |
1200000 | MAŁOPOLSKIE | 2012 | 2103 | 21050.0 | 10.01 |
1200000 | MAŁOPOLSKIE | 2013 | 1838 | 17005.0 | 9.25 |
1200000 | MAŁOPOLSKIE | 2014 | 1378 | 15529.0 | 11.27 |
1200000 | MAŁOPOLSKIE | 2015 | 1128 | 12976.0 | 11.50 |
1200000 | MAŁOPOLSKIE | 2016 | 1093 | 12364.0 | 11.31 |
1200000 | MAŁOPOLSKIE | 2017 | 934 | 10691.0 | 11.45 |
1200000 | MAŁOPOLSKIE | 2018 | 770 | 8844.0 | 11.49 |
1400000 | MAZOWIECKIE | 2006 | 1028 | 20877.8 | 20.31 |
1400000 | MAZOWIECKIE | 2007 | 1215 | 23217.5 | 19.11 |
1400000 | MAZOWIECKIE | 2008 | 1481 | 27742.3 | 18.73 |
1400000 | MAZOWIECKIE | 2009 | 1673 | 34538.0 | 20.64 |
1400000 | MAZOWIECKIE | 2010 | 1935 | 46229.4 | 23.89 |
1400000 | MAZOWIECKIE | 2011 | 2140 | 50099.9 | 23.41 |
1400000 | MAZOWIECKIE | 2012 | 2373 | 55804.0 | 23.52 |
1400000 | MAZOWIECKIE | 2013 | 2609 | 63445.0 | 24.32 |
1400000 | MAZOWIECKIE | 2014 | 2374 | 60354.0 | 25.42 |
1400000 | MAZOWIECKIE | 2015 | 2147 | 53790.0 | 25.05 |
1400000 | MAZOWIECKIE | 2016 | 2426 | 49517.0 | 20.41 |
1400000 | MAZOWIECKIE | 2017 | 2215 | 44348.0 | 20.02 |
1400000 | MAZOWIECKIE | 2018 | 2284 | 42049.0 | 18.41 |
1600000 | OPOLSKIE | 2006 | 46 | 1195.9 | 26.00 |
1600000 | OPOLSKIE | 2007 | 53 | 934.0 | 17.62 |
1600000 | OPOLSKIE | 2008 | 62 | 1570.7 | 25.33 |
1600000 | OPOLSKIE | 2009 | 63 | 1879.0 | 29.83 |
1600000 | OPOLSKIE | 2010 | 79 | 3180.1 | 40.25 |
1600000 | OPOLSKIE | 2011 | 86 | 2702.9 | 31.43 |
1600000 | OPOLSKIE | 2012 | 90 | 2930.0 | 32.56 |
1600000 | OPOLSKIE | 2013 | 88 | 3543.0 | 40.26 |
1600000 | OPOLSKIE | 2014 | 75 | 3306.0 | 44.08 |
1600000 | OPOLSKIE | 2015 | 67 | 3042.0 | 45.40 |
1600000 | OPOLSKIE | 2016 | 68 | 3216.0 | 47.29 |
1600000 | OPOLSKIE | 2017 | 57 | 2790.0 | 48.95 |
1600000 | OPOLSKIE | 2018 | 61 | 3554.0 | 58.26 |
1800000 | PODKARPACKIE | 2006 | 1164 | 20600.6 | 17.70 |
1800000 | PODKARPACKIE | 2007 | 1577 | 27046.7 | 17.15 |
1800000 | PODKARPACKIE | 2008 | 1892 | 28670.5 | 15.15 |
1800000 | PODKARPACKIE | 2009 | 2014 | 22593.0 | 11.22 |
1800000 | PODKARPACKIE | 2010 | 2091 | 31867.5 | 15.24 |
1800000 | PODKARPACKIE | 2011 | 2045 | 32358.5 | 15.82 |
1800000 | PODKARPACKIE | 2012 | 1940 | 30381.0 | 15.66 |
1800000 | PODKARPACKIE | 2013 | 1750 | 29506.0 | 16.86 |
1800000 | PODKARPACKIE | 2014 | 1475 | 23510.0 | 15.94 |
1800000 | PODKARPACKIE | 2015 | 1261 | 16656.0 | 13.21 |
1800000 | PODKARPACKIE | 2016 | 1252 | 15486.0 | 12.37 |
1800000 | PODKARPACKIE | 2017 | 1194 | 15349.0 | 12.86 |
1800000 | PODKARPACKIE | 2018 | 1131 | 13630.0 | 12.05 |
2000000 | PODLASKIE | 2006 | 628 | 11656.7 | 18.56 |
2000000 | PODLASKIE | 2007 | 847 | 15391.0 | 18.17 |
2000000 | PODLASKIE | 2008 | 1160 | 20409.8 | 17.59 |
2000000 | PODLASKIE | 2009 | 1528 | 28764.0 | 18.82 |
2000000 | PODLASKIE | 2010 | 2033 | 42916.8 | 21.11 |
2000000 | PODLASKIE | 2011 | 2440 | 52065.9 | 21.34 |
2000000 | PODLASKIE | 2012 | 2924 | 56367.0 | 19.28 |
2000000 | PODLASKIE | 2013 | 3407 | 63548.0 | 18.65 |
2000000 | PODLASKIE | 2014 | 3432 | 64897.0 | 18.91 |
2000000 | PODLASKIE | 2015 | 3273 | 56528.0 | 17.27 |
2000000 | PODLASKIE | 2016 | 3437 | 55168.0 | 16.05 |
2000000 | PODLASKIE | 2017 | 3211 | 53551.0 | 16.68 |
2000000 | PODLASKIE | 2018 | 2989 | 51608.0 | 17.27 |
2200000 | POMORSKIE | 2006 | 222 | 8037.2 | 36.20 |
2200000 | POMORSKIE | 2007 | 273 | 10967.6 | 40.17 |
2200000 | POMORSKIE | 2008 | 392 | 11366.0 | 28.99 |
2200000 | POMORSKIE | 2009 | 494 | 14591.0 | 29.54 |
2200000 | POMORSKIE | 2010 | 648 | 22554.0 | 34.81 |
2200000 | POMORSKIE | 2011 | 763 | 27356.5 | 35.85 |
2200000 | POMORSKIE | 2012 | 894 | 30615.0 | 34.24 |
2200000 | POMORSKIE | 2013 | 893 | 28721.0 | 32.16 |
2200000 | POMORSKIE | 2014 | 847 | 29282.0 | 34.57 |
2200000 | POMORSKIE | 2015 | 737 | 24866.0 | 33.74 |
2200000 | POMORSKIE | 2016 | 679 | 23328.0 | 34.36 |
2200000 | POMORSKIE | 2017 | 609 | 22419.0 | 36.81 |
2200000 | POMORSKIE | 2018 | 540 | 19974.0 | 36.99 |
2400000 | ŚLĄSKIE | 2006 | 116 | 2340.0 | 20.17 |
2400000 | ŚLĄSKIE | 2007 | 143 | 3079.3 | 21.53 |
2400000 | ŚLĄSKIE | 2008 | 176 | 3934.5 | 22.36 |
2400000 | ŚLĄSKIE | 2009 | 199 | 3632.0 | 18.25 |
2400000 | ŚLĄSKIE | 2010 | 228 | 5738.9 | 25.17 |
2400000 | ŚLĄSKIE | 2011 | 238 | 6786.7 | 28.52 |
2400000 | ŚLĄSKIE | 2012 | 236 | 7125.0 | 30.19 |
2400000 | ŚLĄSKIE | 2013 | 242 | 7220.0 | 29.83 |
2400000 | ŚLĄSKIE | 2014 | 230 | 7788.0 | 33.86 |
2400000 | ŚLĄSKIE | 2015 | 201 | 6638.0 | 33.02 |
2400000 | ŚLĄSKIE | 2016 | 180 | 5324.0 | 29.58 |
2400000 | ŚLĄSKIE | 2017 | 162 | 3726.0 | 23.00 |
2400000 | ŚLĄSKIE | 2018 | 148 | 2951.0 | 19.94 |
2600000 | ŚWIĘTOKRZYSKIE | 2006 | 892 | 8963.4 | 10.05 |
2600000 | ŚWIĘTOKRZYSKIE | 2007 | 995 | 9824.1 | 9.87 |
2600000 | ŚWIĘTOKRZYSKIE | 2008 | 1165 | 10840.7 | 9.31 |
2600000 | ŚWIĘTOKRZYSKIE | 2009 | 1170 | 10647.0 | 9.10 |
2600000 | ŚWIĘTOKRZYSKIE | 2010 | 1243 | 13122.6 | 10.56 |
2600000 | ŚWIĘTOKRZYSKIE | 2011 | 1296 | 14301.0 | 11.03 |
2600000 | ŚWIĘTOKRZYSKIE | 2012 | 1288 | 14551.0 | 11.30 |
2600000 | ŚWIĘTOKRZYSKIE | 2013 | 1207 | 15122.0 | 12.53 |
2600000 | ŚWIĘTOKRZYSKIE | 2014 | 992 | 13038.0 | 13.14 |
2600000 | ŚWIĘTOKRZYSKIE | 2015 | 853 | 11598.0 | 13.60 |
2600000 | ŚWIĘTOKRZYSKIE | 2016 | 834 | 10739.0 | 12.88 |
2600000 | ŚWIĘTOKRZYSKIE | 2017 | 740 | 9970.0 | 13.47 |
2600000 | ŚWIĘTOKRZYSKIE | 2018 | 680 | 9087.0 | 13.36 |
2800000 | WARMIŃSKO-MAZURSKIE | 2006 | 586 | 23990.8 | 40.94 |
2800000 | WARMIŃSKO-MAZURSKIE | 2007 | 773 | 28810.1 | 37.27 |
2800000 | WARMIŃSKO-MAZURSKIE | 2008 | 1059 | 28791.0 | 27.19 |
2800000 | WARMIŃSKO-MAZURSKIE | 2009 | 1514 | 49617.0 | 32.77 |
2800000 | WARMIŃSKO-MAZURSKIE | 2010 | 2279 | 75241.9 | 33.02 |
2800000 | WARMIŃSKO-MAZURSKIE | 2011 | 3033 | 98473.0 | 32.47 |
2800000 | WARMIŃSKO-MAZURSKIE | 2012 | 3793 | 112945.0 | 29.78 |
2800000 | WARMIŃSKO-MAZURSKIE | 2013 | 4235 | 116199.0 | 27.44 |
2800000 | WARMIŃSKO-MAZURSKIE | 2014 | 4234 | 117097.0 | 27.66 |
2800000 | WARMIŃSKO-MAZURSKIE | 2015 | 4041 | 112768.0 | 27.91 |
2800000 | WARMIŃSKO-MAZURSKIE | 2016 | 4142 | 108667.0 | 26.24 |
2800000 | WARMIŃSKO-MAZURSKIE | 2017 | 3745 | 107067.0 | 28.59 |
2800000 | WARMIŃSKO-MAZURSKIE | 2018 | 3393 | 104574.0 | 30.82 |
3000000 | WIELKOPOLSKIE | 2006 | 264 | 14510.6 | 54.96 |
3000000 | WIELKOPOLSKIE | 2007 | 415 | 21095.6 | 50.83 |
3000000 | WIELKOPOLSKIE | 2008 | 516 | 20416.6 | 39.57 |
3000000 | WIELKOPOLSKIE | 2009 | 588 | 23770.0 | 40.43 |
3000000 | WIELKOPOLSKIE | 2010 | 748 | 32512.8 | 43.47 |
3000000 | WIELKOPOLSKIE | 2011 | 888 | 38434.3 | 43.28 |
3000000 | WIELKOPOLSKIE | 2012 | 974 | 41479.0 | 42.59 |
3000000 | WIELKOPOLSKIE | 2013 | 1006 | 41617.0 | 41.37 |
3000000 | WIELKOPOLSKIE | 2014 | 966 | 42071.0 | 43.55 |
3000000 | WIELKOPOLSKIE | 2015 | 809 | 34523.0 | 42.67 |
3000000 | WIELKOPOLSKIE | 2016 | 843 | 29171.0 | 34.60 |
3000000 | WIELKOPOLSKIE | 2017 | 736 | 25389.0 | 34.50 |
3000000 | WIELKOPOLSKIE | 2018 | 727 | 25994.0 | 35.76 |
3200000 | ZACHODNIOPOMORSKIE | 2006 | 678 | 42430.9 | 62.58 |
3200000 | ZACHODNIOPOMORSKIE | 2007 | 1059 | 59113.5 | 55.82 |
3200000 | ZACHODNIOPOMORSKIE | 2008 | 1396 | 54150.7 | 38.79 |
3200000 | ZACHODNIOPOMORSKIE | 2009 | 1696 | 68977.0 | 40.67 |
3200000 | ZACHODNIOPOMORSKIE | 2010 | 2373 | 98023.0 | 41.31 |
3200000 | ZACHODNIOPOMORSKIE | 2011 | 3065 | 119779.9 | 39.08 |
3200000 | ZACHODNIOPOMORSKIE | 2012 | 3579 | 135367.0 | 37.82 |
3200000 | ZACHODNIOPOMORSKIE | 2013 | 3640 | 129585.0 | 35.60 |
3200000 | ZACHODNIOPOMORSKIE | 2014 | 3526 | 129456.0 | 36.71 |
3200000 | ZACHODNIOPOMORSKIE | 2015 | 3043 | 114887.0 | 37.75 |
3200000 | ZACHODNIOPOMORSKIE | 2016 | 2573 | 100570.0 | 39.09 |
3200000 | ZACHODNIOPOMORSKIE | 2017 | 2165 | 87620.0 | 40.47 |
3200000 | ZACHODNIOPOMORSKIE | 2018 | 2060 | 92892.0 | 45.09 |
Prawdziwy eksplorator danych nie mógł by się nazywać tym mianem jeżeli po dotknięciu danych ciekawość nie zawiodła by go do choćby najprostszej ich analizy i wizualizacji.
Na początek przygotowałem więc kilka podstawowych statystyk w ujęciu całościowym (dla całego kraju).
Do przygotowania tych statystyk wykorzystałem kilka własnych funkcji. Są to między innymi gmean
do wyznaczania średniej geometrycznej, moda
do wyznaczania dominanty, funkcja ShapiroTest
zwracająca wartości statystyki W oraz p wartość testu Shapiro-Wilka, odporna na zarówno zbyt krótki jak i zbyt długi wektor na wejściu. Ostania to funkcja sum_stats
zwracająca szereg różnych statystyk która została napisana w taki sposób aby można było używając ją z jawnym określeniem zmiennych dla których będę ją używać.
#Średnia geometryczna
gmean = function(x) ifelse(all(x>0), exp(mean(log(x))), NULL)
#Dominanta
moda = function(x) {
dens = density(x)
dens$x[which(dens$y == max(dens$y))]
}
#Funckcja zawracająca statystykę W oraz p.value testu Shapiro-Wilka
ShapiroTest = function(x, alpha=0.05){
if(length(x)>5000) x=sample(x, 5000)
if(length(x)>=3) sw=shapiro.test(x) else sw=list(statistic=NA, p.value=NA)
list(W = sw$statistic, p = sw$p.value)
}
#Funckja zwracająca szereg różnych satystyk
sum_stats = function(data, group, value, alpha=0.05) data %>%
group_by(!!enquo(group)) %>%
summarise(
n = n(),
min = min(!!enquo(value)),
q1 = quantile(!!enquo(value),1/4,8),
mean = mean(!!enquo(value)),
gmean = gmean(!!enquo(value)),
median = median(!!enquo(value)),
moda = moda(!!enquo(value)),
q3 = quantile(!!enquo(value),3/4,8),
max = max(!!enquo(value)),
sd = sd(!!enquo(value)),
kurtosis = e1071::kurtosis(!!enquo(value)),
skewness = e1071::skewness(!!enquo(value)),
SW.W = ShapiroTest(!!enquo(value), alpha)$W,
SW.p = ShapiroTest(!!enquo(value), alpha)$p,
nout = length(boxplot.stats(!!enquo(value))$out)
)
Wykorzystanie tych funkcji pozwoliło mi na bardzo łatwe obliczenie interesujących mnie statystyk.
Pol.stat = ROLN_3179 %>%
pivot_longer(gospodarstwa:gospodarstwo) %>%
sum_stats(name, value)
Pol.stat %>% mutate_if(is.numeric, signif, dig=4) %>% kable2
name | n | min | q1 | mean | gmean | median | moda | q3 | max | sd | kurtosis | skewness | SW.W | SW.p | nout |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
gospodarstwa | 208 | 46.000 | 477.80 | 1243.00 | 822.70 | 993.50 | 560.50 | 1912.00 | 4235.00 | 1001.00 | 0.4922 | 1.0520 | 0.8987 | 0.0e+00 | 3 |
gospodarstwo | 208 | 7.505 | 17.27 | 26.57 | 23.95 | 24.76 | 17.99 | 35.99 | 62.58 | 11.68 | -0.5688 | 0.4469 | 0.9562 | 5.3e-06 | 0 |
powierzchnia | 208 | 934.000 | 10120.00 | 30810.00 | 19710.00 | 22770.00 | 11100.00 | 40980.00 | 135400.00 | 29240.00 | 2.6070 | 1.7050 | 0.8060 | 0.0e+00 | 16 |
Dane te można przedstawić w bardzo czytelny sposób na wykresie typu box-plot. Dodatkowo klasyczny box-plot uzupełniłem o wykres wiolinowy co pozwala mi od razu ocenić gęstość rozkładu. Na wykresie zaznaczyłem także wartość centralne.
#Przygotowanie wykresu typu 1
plot1 = function(df, variable, stat) {
stat = stat %>%
select(name, mean, gmean, median, moda) %>%
filter(name == variable) %>%
pivot_longer(mean:moda, names_to = "Centralne", values_to = variable) %>%
mutate(Centralne = Centralne %>% fct_inorder)
df %>%
ggplot(aes(1, !!as.name(variable)))+
geom_violin(alpha=0.3, fill = "mediumorchid1")+
geom_boxplot(alpha=0.8, width=0.3, outlier.shape = NA)+
geom_jitter(shape=21, width =0.1, fill = "mediumorchid1", alpha=0.6, size=2)+
geom_point(aes(1, !!as.name(variable), shape=Centralne),
data=stat, size=4, fill = "#660066")+
scale_shape_manual(values=c(21, 22, 23, 24))+
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
legend.position = c(0.9, 0.75))+
xlab("")
}
ROLN_3179 %>% plot1("gospodarstwa", Pol.stat)+
ylab("Ilość gospodarstw rolnych")+
labs(title = "Ilość gospodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_3179 %>% plot1("powierzchnia", Pol.stat)+
ylab("Powierzchnia użytków rolnych [ha]")+
labs(title = "Powierzchnia użytków rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_3179 %>% plot1("gospodarstwo", Pol.stat)+
ylab("Gospodarstwo [ha]")+
labs(title = "Średnia wielkość godpodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
W kolejnym kroku zwizualizowałem te same dane tym razem w podziale na województwa, wykonując obliczenia osobno dla zmiennej gospodarstwa
, powierzchnia
oraz gospodarstwo
.
#Funckja wyliczająca statystyki dla wybranej zmiennej
stat1 = function(df, variable) df %>%
ungroup() %>%
nest_by(Województwo) %>%
mutate(stat = sum_stats(data, NULL, !!as.name(variable)) %>% list) %>%
unnest(stat) %>%
select(-data)
Woj.stat.gosp = ROLN_3179 %>% stat1("gospodarstwa")
Woj.stat.gosp %>% mutate_if(is.numeric, signif, dig=4) %>% kable2
Województwo | n | min | q1 | mean | gmean | median | moda | q3 | max | sd | kurtosis | skewness | SW.W | SW.p | nout |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DOLNOŚLĄSKIE | 13 | 481 | 741 | 941.90 | 904.60 | 879 | 813.00 | 1189 | 1322 | 267.60 | -1.39400 | -0.0005311 | 0.9541 | 0.66150 | 0 |
KUJAWSKO-POMORSKIE | 13 | 173 | 279 | 344.50 | 332.20 | 371 | 390.30 | 401 | 470 | 87.98 | -1.03700 | -0.5503000 | 0.9303 | 0.34370 | 0 |
LUBELSKIE | 13 | 1072 | 1710 | 1824.00 | 1794.00 | 1948 | 1975.00 | 1980 | 2174 | 314.20 | 0.03763 | -1.0450000 | 0.8752 | 0.06144 | 1 |
LUBUSKIE | 13 | 256 | 579 | 916.40 | 815.10 | 948 | 1143.00 | 1202 | 1422 | 395.30 | -1.45700 | -0.2910000 | 0.9341 | 0.38550 | 0 |
ŁÓDZKIE | 13 | 218 | 366 | 427.20 | 412.90 | 478 | 491.20 | 497 | 528 | 103.90 | -0.93200 | -0.8337000 | 0.8336 | 0.01757 | 0 |
MAŁOPOLSKIE | 13 | 770 | 1128 | 1602.00 | 1516.00 | 1627 | 2064.00 | 2103 | 2197 | 519.10 | -1.69500 | -0.1867000 | 0.8891 | 0.09473 | 0 |
MAZOWIECKIE | 13 | 1028 | 1673 | 1992.00 | 1924.00 | 2147 | 2270.00 | 2373 | 2609 | 495.00 | -1.02500 | -0.6743000 | 0.9005 | 0.13570 | 0 |
OPOLSKIE | 13 | 46 | 61 | 68.85 | 67.54 | 67 | 62.95 | 79 | 90 | 13.87 | -1.34800 | 0.1223000 | 0.9556 | 0.68510 | 0 |
PODKARPACKIE | 13 | 1131 | 1252 | 1599.00 | 1558.00 | 1577 | 1253.00 | 1940 | 2091 | 372.00 | -1.84500 | 0.0214500 | 0.8769 | 0.06478 | 0 |
PODLASKIE | 13 | 628 | 1528 | 2408.00 | 2118.00 | 2924 | 3154.00 | 3273 | 3437 | 1048.00 | -1.50700 | -0.4997000 | 0.8584 | 0.03673 | 0 |
POMORSKIE | 13 | 222 | 494 | 614.70 | 568.40 | 648 | 701.50 | 763 | 894 | 222.20 | -1.23700 | -0.3675000 | 0.9428 | 0.49480 | 0 |
ŚLĄSKIE | 13 | 116 | 162 | 192.20 | 187.70 | 199 | 226.20 | 230 | 242 | 41.67 | -1.41100 | -0.2966000 | 0.9246 | 0.28880 | 0 |
ŚWIĘTOKRZYSKIE | 13 | 680 | 853 | 1027.00 | 1006.00 | 995 | 1207.00 | 1207 | 1296 | 214.00 | -1.61400 | -0.1743000 | 0.9203 | 0.25290 | 0 |
WARMIŃSKO-MAZURSKIE | 13 | 586 | 1514 | 2833.00 | 2366.00 | 3393 | 3845.00 | 4041 | 4235 | 1405.00 | -1.60000 | -0.4654000 | 0.8493 | 0.02794 | 0 |
WIELKOPOLSKIE | 13 | 264 | 588 | 729.20 | 687.20 | 748 | 828.60 | 888 | 1006 | 227.00 | -0.89770 | -0.5864000 | 0.9342 | 0.38650 | 0 |
ZACHODNIOPOMORSKIE | 13 | 678 | 1696 | 2373.00 | 2141.00 | 2373 | 2465.00 | 3065 | 3640 | 979.40 | -1.39000 | -0.2023000 | 0.9476 | 0.56190 | 0 |
Woj.stat.pow = ROLN_3179 %>% stat1("powierzchnia")
Woj.stat.pow %>% mutate_if(is.numeric, signif, dig=4) %>% kable2
Województwo | n | min | q1 | mean | gmean | median | moda | q3 | max | sd | kurtosis | skewness | SW.W | SW.p | nout |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DOLNOŚLĄSKIE | 13 | 19330 | 27360 | 31970 | 31000 | 29200 | 28030 | 37460 | 45550 | 8181.0 | -1.288 | 0.239600 | 0.9475 | 0.561200 | 0 |
KUJAWSKO-POMORSKIE | 13 | 4846 | 6826 | 8230 | 7981 | 8331 | 8123 | 9263 | 11570 | 2077.0 | -1.239 | 0.093530 | 0.9657 | 0.838200 | 0 |
LUBELSKIE | 13 | 19960 | 28430 | 31550 | 30990 | 31340 | 30210 | 34850 | 40820 | 5981.0 | -1.003 | -0.262800 | 0.9804 | 0.981300 | 0 |
LUBUSKIE | 13 | 12090 | 22930 | 36670 | 33350 | 37920 | 44170 | 46340 | 54690 | 14510.0 | -1.450 | -0.351100 | 0.9136 | 0.205100 | 0 |
ŁÓDZKIE | 13 | 3378 | 5270 | 7942 | 7395 | 8905 | 9639 | 9986 | 11230 | 2735.0 | -1.408 | -0.557600 | 0.8678 | 0.048940 | 0 |
MAŁOPOLSKIE | 13 | 8844 | 12980 | 16100 | 15490 | 15530 | 14260 | 21050 | 22620 | 4511.0 | -1.452 | 0.095610 | 0.9394 | 0.449100 | 0 |
MAZOWIECKIE | 13 | 20880 | 34540 | 44000 | 41670 | 46230 | 49750 | 53790 | 63440 | 13780.0 | -1.301 | -0.346600 | 0.9443 | 0.514300 | 0 |
OPOLSKIE | 13 | 934 | 1879 | 2603 | 2414 | 2930 | 3136 | 3216 | 3554 | 898.7 | -1.202 | -0.671700 | 0.8661 | 0.046440 | 0 |
PODKARPACKIE | 13 | 13630 | 16660 | 23670 | 22690 | 23510 | 29090 | 29510 | 32360 | 6801.0 | -1.702 | -0.154800 | 0.9075 | 0.169300 | 0 |
PODLASKIE | 13 | 11660 | 28760 | 44070 | 38930 | 52070 | 55220 | 56370 | 64900 | 18530.0 | -1.333 | -0.617000 | 0.8565 | 0.034620 | 0 |
POMORSKIE | 13 | 8037 | 14590 | 21080 | 19530 | 22550 | 25180 | 27360 | 30620 | 7580.0 | -1.413 | -0.400400 | 0.9167 | 0.226300 | 0 |
ŚLĄSKIE | 13 | 2340 | 3632 | 5099 | 4749 | 5324 | 3466 | 6787 | 7788 | 1898.0 | -1.759 | -0.004649 | 0.9101 | 0.183700 | 0 |
ŚWIĘTOKRZYSKIE | 13 | 8963 | 9970 | 11680 | 11500 | 10840 | 10320 | 13120 | 15120 | 2122.0 | -1.534 | 0.298000 | 0.9185 | 0.239700 | 0 |
WARMIŃSKO-MAZURSKIE | 13 | 23990 | 49620 | 83400 | 72550 | 104600 | 108700 | 112800 | 117100 | 37100.0 | -1.520 | -0.613700 | 0.7889 | 0.005052 | 0 |
WIELKOPOLSKIE | 13 | 14510 | 23770 | 30080 | 28700 | 29170 | 25220 | 38430 | 42070 | 9120.0 | -1.478 | -0.039160 | 0.9377 | 0.427400 | 0 |
ZACHODNIOPOMORSKIE | 13 | 42430 | 68980 | 94830 | 89460 | 98020 | 111400 | 119800 | 135400 | 30980.0 | -1.455 | -0.260300 | 0.9378 | 0.428600 | 0 |
Woj.stat.gos1 = ROLN_3179 %>% stat1("gospodarstwo")
Woj.stat.gos1 %>% mutate_if(is.numeric, signif, dig=4) %>% kable2
Województwo | n | min | q1 | mean | gmean | median | moda | q3 | max | sd | kurtosis | skewness | SW.W | SW.p | nout |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DOLNOŚLĄSKIE | 13 | 25.880 | 32.39 | 34.46 | 34.27 | 34.45 | 34.38 | 36.82 | 40.19 | 3.606 | 0.1477 | -0.63710 | 0.9531 | 0.646200 | 0 |
KUJAWSKO-POMORSKIE | 13 | 19.380 | 22.58 | 24.26 | 24.02 | 23.51 | 22.86 | 27.12 | 29.33 | 3.503 | -1.5700 | 0.02960 | 0.9223 | 0.269700 | 0 |
LUBELSKIE | 13 | 14.590 | 16.87 | 17.33 | 17.27 | 17.23 | 17.36 | 18.62 | 19.48 | 1.476 | -1.0670 | -0.30060 | 0.9589 | 0.737100 | 0 |
LUBUSKIE | 13 | 37.660 | 38.55 | 41.07 | 40.91 | 39.60 | 38.94 | 42.39 | 50.42 | 3.859 | 0.2927 | 1.24800 | 0.8021 | 0.007219 | 1 |
ŁÓDZKIE | 13 | 13.640 | 15.50 | 18.09 | 17.91 | 18.30 | 19.12 | 19.59 | 22.10 | 2.626 | -1.2830 | -0.27550 | 0.9433 | 0.501000 | 0 |
MAŁOPOLSKIE | 13 | 7.505 | 10.01 | 10.29 | 10.22 | 10.19 | 11.25 | 11.31 | 11.50 | 1.205 | -0.3277 | -0.80850 | 0.8846 | 0.082240 | 1 |
MAZOWIECKIE | 13 | 18.410 | 20.02 | 21.79 | 21.65 | 20.64 | 19.79 | 23.89 | 25.42 | 2.529 | -1.7720 | 0.08805 | 0.8956 | 0.116500 | 0 |
OPOLSKIE | 13 | 17.620 | 29.83 | 37.48 | 35.73 | 40.25 | 42.73 | 45.40 | 58.26 | 11.460 | -1.1280 | 0.01647 | 0.9774 | 0.964400 | 0 |
PODKARPACKIE | 13 | 11.220 | 12.86 | 14.71 | 14.56 | 15.24 | 15.93 | 15.94 | 17.70 | 2.123 | -1.5340 | -0.22870 | 0.9302 | 0.342600 | 0 |
PODLASKIE | 13 | 16.050 | 17.27 | 18.44 | 18.38 | 18.56 | 18.54 | 18.91 | 21.34 | 1.555 | -0.7805 | 0.43600 | 0.9443 | 0.514400 | 0 |
POMORSKIE | 13 | 28.990 | 33.74 | 34.50 | 34.37 | 34.57 | 34.70 | 36.20 | 40.17 | 3.023 | -0.5402 | -0.23120 | 0.9510 | 0.614000 | 3 |
ŚLĄSKIE | 13 | 18.250 | 21.53 | 25.80 | 25.30 | 25.17 | 21.54 | 29.83 | 33.86 | 5.289 | -1.6430 | 0.08978 | 0.9271 | 0.312300 | 0 |
ŚWIĘTOKRZYSKIE | 13 | 9.100 | 10.05 | 11.55 | 11.44 | 11.30 | 13.07 | 13.14 | 13.60 | 1.680 | -1.7620 | -0.10810 | 0.8940 | 0.110700 | 0 |
WARMIŃSKO-MAZURSKIE | 13 | 26.240 | 27.66 | 30.93 | 30.67 | 29.78 | 28.27 | 32.77 | 40.94 | 4.334 | -0.2192 | 0.94670 | 0.8786 | 0.068250 | 1 |
WIELKOPOLSKIE | 13 | 34.500 | 39.57 | 42.12 | 41.76 | 42.59 | 42.60 | 43.47 | 54.96 | 5.857 | -0.3047 | 0.62730 | 0.9043 | 0.153000 | 2 |
ZACHODNIOPOMORSKIE | 13 | 35.600 | 37.82 | 42.37 | 41.79 | 39.09 | 38.88 | 41.31 | 62.58 | 7.951 | 0.9288 | 1.51500 | 0.7253 | 0.001005 | 2 |
Podobnie jak poprzednio dane te zostaną zaprezentowane w postaci box-plotów uszeregowanych w kolejności według rosnącej mediany. Aby jednak nie pogarszać czytelności wykresu zrezygnowałem z wykresu wiolinowego oraz zaznaczania wartości centralnych.
#Przygotowanie wykresu typu 2
plot2 = function(df, variable) df %>%
mutate(Województwo = Województwo %>%
fct_reorder(!!as.name(variable), median)) %>%
ggplot(aes(Województwo, !!as.name(variable), fill=Województwo))+
geom_boxplot()+
theme(legend.position = "none",
axis.text.x = element_text(angle=-90, hjust=0, vjust=0))
ROLN_3179 %>% plot2("gospodarstwa")+
ylab("Ilość gospodarstw rolnych")+
labs(title = "Ilość gospodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_3179 %>% plot2("powierzchnia")+
ylab("Powierzchnia użytków rolnych [ha]")+
labs(title = "Powierzchnia użytków rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_3179 %>% plot2("gospodarstwo")+
ylab("Gospodarstwo [ha]")+
labs(title = "Średnia wielkość godpodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
Biorąc zaś pod uwagę, że analizowane dane są typowymi szerami czasowymi postanowiłem przdstawić ich trend w czasie.
#Posdumowanie wartości z wszystkich województw
ROLN_POLSKA = ROLN_3179 %>%
select(where(is.numeric)) %>%
group_by(rok) %>%
summarise(
gospodarstwa = sum(gospodarstwa),
powierzchnia = sum(powierzchnia),
gospodarstwo = sum(gospodarstwo)
)
#Przygotowanie wykresu typu 3
plot3 = function(df, variable, rok.przelomowy=NA){
p = df %>% ggplot(aes(rok, !!as.name(variable)))
if(is.na(rok.przelomowy)){
p = p + geom_smooth(formula = y~x, method = "lm")
} else {
df1 = df %>% filter(rok<=rok.przelomowy)
df2 = df %>% filter(rok>=rok.przelomowy)
p = p + geom_smooth(formula = y~x, method = "lm", data=df1)+
geom_smooth(formula = y~x, method = "lm", data=df2)+
geom_vline(xintercept = rok.przelomowy, color = "red", linetype="dotdash")
}
p + geom_line(size=1, linetype = "dashed")+
geom_point()+
scale_x_continuous(breaks = seq(2006, 2018, 2))
}
ROLN_POLSKA %>% plot3("gospodarstwa", 2013)+
ylab("Ilość gospodarstw rolnych")+
labs(title = "Ilość gospodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_POLSKA %>% plot3("powierzchnia", 2013)+
ylab("Powierzchnia użytków rolnych [ha]")+
labs(title = "Powierzchnia użytków rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
ROLN_POLSKA %>% plot3("gospodarstwo")+
ylab("Gospodarstwo [ha]")+
labs(title = "Średnia wielkość godpodarstw rolnych w Polsce w latach 2006-2018",
caption = "M. Fiołka")
Tak samo trend ten przedstawiam w poszczególnych województwach szeregując je tym razem według malejącej mediany.
#Przygotowanie wykresy typu 4
plot4 = function(df, variable) df %>%
mutate(Województwo = Województwo %>%
fct_reorder(!!as.name(variable), median, .desc = TRUE)) %>%
ggplot(aes(rok, !!as.name(variable), color=Województwo))+
geom_point(aes(fill=Województwo), color = "black", shape=23, size=2)+
geom_path()+
scale_x_continuous(breaks = seq(2006, 2018, 2))
ROLN_3179 %>% plot4("gospodarstwa")+
ylab("Ilość gospodarstw rolnych")+
labs(title = "Ilość gospodarstw rolnych w Polsce",
subtitle = "Z podziałem według województw",
caption = "M. Fiołka")
ROLN_3179 %>% plot4("powierzchnia")+
ylab("Powierzchnia użytków rolnych [ha]")+
labs(title = "Powierzchnia użytków rolnych w Polsce",
subtitle = "Z podziałem według województw",
caption = "M. Fiołka")
ROLN_3179 %>% plot4("gospodarstwo")+
ylab("Gospodarstwo [ha]")+
labs(title = "Średnia wielkość godpodarstw rolnych w Polsce",
subtitle = "Z podziałem według województw",
caption = "M. Fiołka")
Przeprowadzone zadanie pozwoliło mi na wyciągnięcie kilku bardzo istotnych wniosków. Po pierwsze uświadomiłem sobie, że wczytując dane do R muszę zwracać bardzo dużą uwagę jak te dane są przygotowane i jaki będzie efekt po zastosowaniu domyślnych parametrów funkcji importujących dane. Dane, szczególnie te pochodzące w rożnych arkuszy Excela często mogą być przygotowane w sposób niechlujny z licznymi scaleniami komórek które będą największym wrogiem poprawnego importu danych do R.
Należy także zwracać baczną uwagę na sam sposób zapisu danych. Nierzadko trzeba będzie zmienić ich formę do długiej lub szerokiej w zależności od potrzeb i wymagań funkcji wizualno-analitycznych które będę używać w R.
Nie mogę także zapominać o takich drobiazgach jak chociażby metoda zaokrągleń liczb zmiennoprzecinkowych i niezgodność Excela z normą IEC 60559.
Także import danych z plików csv może nieść ze sobą niejakie problemy. Mogą się pojawić problemy z nazwami zmiennych a nawet, jak to było w moim zadaniu, z poprawną ich ilością. Trzeba także pamiętać, że zapisując dane z arkusza Excel do pliku csv możemy całkiem nieświadomie utracić część dokładności danych tylko i wyłącznie przez sam sposób ich prezentacji w Excelu.
Bardzo istotne jest także aby z rozmysłem zaplanować i wykonać automatyczną walidację zaimportowanych danych, szczególnie gdy będę miał do czynienia z wieloma tysiącami rekordów i setkami zmiennych. Ręczne, a raczej wizualne przeglądanie dużych zbiorów danych może nie przynieść oczekiwanych efektów i łatwo będzie przeoczyć czające się w danych błędy i nieścisłości.