Pierwsza mapa ilustrująca dane (grupa 2).

rm(list = ls())

Podczytanie bibilotek

library(tidyverse)
library(readxl)

Podczytanie danych z pliku lokalnego ściągniętego z bdl GUS.

Dane dotyczą przyrostu naturalnego na 1000 ludności wg miejsca zamieszkania.

przyrost <- read_excel("dane/LUDN_3425_XPIV_20200407091358.xlsx", 
                       sheet = "DANE", 
                       col_types = c("text","text", "text", "text", "numeric", 
                                     "skip", "skip"))
przyrost %>% head

Zmianna polskich nazw na angielskie (R na ogół lubi tylko litery alfabetu łacińskiego) oraz pisowni województw.

przyrost <- przyrost %>%
  mutate(Nazwa = str_to_title((Nazwa)),
         Lokalizacje = str_replace(Lokalizacje, "ogółem", "all"),
         Lokalizacje = str_replace(Lokalizacje, "w miastach", "cities"),
         Lokalizacje = str_replace(Lokalizacje, "na wsi", "villages"))

Zmianna nazwy kolumny zawierającą nazwy województw (dalczego za chwilę).

names(przyrost)
[1] "Kod"         "Nazwa"       "Lokalizacje" "Rok"         "Wartosc"    
names(przyrost)[2] <- "NAME_1"
names(przyrost)
[1] "Kod"         "NAME_1"      "Lokalizacje" "Rok"         "Wartosc"    

Połącznie informacji o roku i lokalizacji w jedno (funkcja unite).

przyrost <- przyrost %>%
  select(NAME_1, Kod, Rok, Lokalizacje, Wartosc) %>%
  unite("year.local", c(Rok, Lokalizacje), sep = ".")

Postać szeroka zbioru danych (jedne wiersz na województwo).

przyrost.w <- przyrost %>%
  pivot_wider(
    names_from = year.local,
    values_from = Wartosc
  )

Bibliotek sf do pracy z danymi przestrzennymi.

library(sf)

Podczytanie pliku konturów województw.

Dane pochodzą ze strony gadm.org

gadm_1sf <- readRDS("dane/gadm36_POL_1_sf.rds")

Jakie są zmienne w gadm_1sf?

names(gadm_1sf)
 [1] "GID_0"     "NAME_0"    "GID_1"     "NAME_1"    "VARNAME_1" "NL_NAME_1" "TYPE_1"    "ENGTYPE_1" "CC_1"     
[10] "HASC_1"    "geometry" 

Gdzie są nazwy województw?

gadm_1sf$NAME_1
 [1] "Dolnośląskie"        "Kujawsko-Pomorskie"  "Łódzkie"             "Lubelskie"           "Lubuskie"           
 [6] "Małopolskie"         "Mazowieckie"         "Opolskie"            "Podkarpackie"        "Podlaskie"          
[11] "Pomorskie"           "Śląskie"             "Świętokrzyskie"      "Warmińsko-Mazurskie" "Wielkopolskie"      
[16] "Zachodniopomorskie" 

Dołączenie danych do obiektu sf z konturami województw.

gadm_1sf.p <- gadm_1sf %>%
  as.data.frame() %>%
  left_join(przyrost.w) %>%
  st_as_sf()
Joining, by = "NAME_1"

Pierwsza wersja mapy z naniesionymi danymi (nie jest najlepsza).

gadm_1sf.p %>%
  ggplot() +
  geom_sf(aes(fill = `2018.all`)) +
  scale_fill_gradient(low = "yellow", high = "red") +
  theme_bw() 

Pierwsza mapa ilustrująca dane (grupa 1).

rm(list = ls())

Tym razem dane dotyczą przyrostu naturalnego, urodzin i zgonów na 1000 ludności wg miejsca zamieszkania.

przyrost <- read_excel("dane/LUDN_3428_XPIV_20200407104536.xlsx", 
                       sheet = "DANE", 
                       col_types = c("text","text", "text", "text", "numeric", 
                                     "skip", "skip"))
names(przyrost)[3] <-"Info"
przyrost <- przyrost %>%
  mutate(Nazwa = str_to_title(Nazwa),
         Info = str_replace(Info, 'urodzenia żywe na 1000 ludności', "urodzenia"), 
         Info = str_replace(Info, 'zgony na 1000 ludności', "zgony"),
         Info = str_replace(Info, 'przyrost naturalny na 1000 ludności', "przyrost"))
przyrost <- przyrost %>%
  select(Nazwa, Kod, Rok, Info, Wartosc)
przyrost <- przyrost %>%
  unite("rok.info", c(Rok, Info), sep = ".")
przyrost.w <- przyrost %>%
  pivot_wider(
    names_from = rok.info,
    values_from = Wartosc
  )
gadm_1sf <- readRDS("dane/gadm36_POL_1_sf.rds")
names(gadm_1sf)
 [1] "GID_0"     "NAME_0"    "GID_1"     "NAME_1"    "VARNAME_1" "NL_NAME_1" "TYPE_1"    "ENGTYPE_1" "CC_1"     
[10] "HASC_1"    "geometry" 
gadm_1sf$NAME_1
 [1] "Dolnośląskie"        "Kujawsko-Pomorskie"  "Łódzkie"             "Lubelskie"           "Lubuskie"           
 [6] "Małopolskie"         "Mazowieckie"         "Opolskie"            "Podkarpackie"        "Podlaskie"          
[11] "Pomorskie"           "Śląskie"             "Świętokrzyskie"      "Warmińsko-Mazurskie" "Wielkopolskie"      
[16] "Zachodniopomorskie" 
names(przyrost.w)[1] <- "NAME_1"
names(przyrost.w)
[1] "NAME_1"         "Kod"            "2018.urodzenia" "2018.zgony"     "2018.przyrost" 
gadm_1sf.p <- gadm_1sf %>%
  as.data.frame() %>%
  left_join(przyrost.w) %>%
  st_as_sf
Joining, by = "NAME_1"
gadm_1sf.p %>%
  ggplot() +
  geom_sf(aes( fill = `2018.urodzenia`)) +
  scale_fill_gradient(low = "yellow", high = "red")

Praca domowa

Do wykonania jedna z map - ilustracja danych z bdl GUS. Dane:

  1. RYNEK NIERUCHOMOŚCI.
  2. RYNKOWA SPRZEDAŻ LOKALI MIESZKALNYCH.
  3. Średnia cena za 1 m2 lokali mieszkalnych sprzedanych w ramach transakcji rynkowych.

Mapa

1.(można zdobyć maksymalnie 80% punktów) - mapa dla województw - analogiczna do wykonanaje na laboratorium. 2.(można zdobyć maksymalnie 100% punktów) - mapa dla powiatóW województwa podlaskiego - należy użyć opcji filtrowania.

LS0tDQp0aXRsZTogIkluZm9ybWF0eWthIGVrb25vbWljem5hIChpbmZvcm1hdHlrYSBpIGVrb25vbWV0cmlhIHJvayBJKSAtIGxhYm9yYXRvcml1bS4iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgUGllcndzemEgbWFwYSBpbHVzdHJ1asSFY2EgZGFuZSAoZ3J1cGEgMikuDQpgYGB7cn0NCnJtKGxpc3QgPSBscygpKQ0KYGBgDQoNCiMjIFBvZGN6eXRhbmllIGJpYmlsb3Rlaw0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKQ0KYGBgDQoNCiMjIFBvZGN6eXRhbmllIGRhbnljaCB6IHBsaWt1IGxva2FsbmVnbyDFm2NpxIVnbmnEmXRlZ28geiAqKmJkbCoqICpHVVMqLg0KDQpEYW5lIGRvdHljesSFICoqcHJ6eXJvc3R1IG5hdHVyYWxuZWdvIG5hIDEwMDAgbHVkbm/Fm2NpIHdnIG1pZWpzY2EgemFtaWVzemthbmlhKiouDQpgYGB7cn0NCnByenlyb3N0IDwtIHJlYWRfZXhjZWwoImRhbmUvTFVETl8zNDI1X1hQSVZfMjAyMDA0MDcwOTEzNTgueGxzeCIsIA0KICAgICAgICAgICAgICAgICAgICAgICBzaGVldCA9ICJEQU5FIiwgDQogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGMoInRleHQiLCJ0ZXh0IiwgInRleHQiLCAidGV4dCIsICJudW1lcmljIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNraXAiLCAic2tpcCIpKQ0KYGBgDQoNCmBgYHtyfQ0KcHJ6eXJvc3QgJT4lIGhlYWQNCmBgYA0KDQojIyBabWlhbm5hIHBvbHNraWNoIG5hencgbmEgYW5naWVsc2tpZSAoUiBuYSBvZ8OzxYIgbHViaSB0eWxrbyBsaXRlcnkgYWxmYWJldHUgxYJhY2nFhHNraWVnbykgb3JheiBwaXNvd25pIHdvamV3w7NkenR3Lg0KYGBge3J9DQpwcnp5cm9zdCA8LSBwcnp5cm9zdCAlPiUNCiAgbXV0YXRlKE5hendhID0gc3RyX3RvX3RpdGxlKChOYXp3YSkpLA0KICAgICAgICAgTG9rYWxpemFjamUgPSBzdHJfcmVwbGFjZShMb2thbGl6YWNqZSwgIm9nw7PFgmVtIiwgImFsbCIpLA0KICAgICAgICAgTG9rYWxpemFjamUgPSBzdHJfcmVwbGFjZShMb2thbGl6YWNqZSwgIncgbWlhc3RhY2giLCAiY2l0aWVzIiksDQogICAgICAgICBMb2thbGl6YWNqZSA9IHN0cl9yZXBsYWNlKExva2FsaXphY2plLCAibmEgd3NpIiwgInZpbGxhZ2VzIikpDQpgYGANCg0KIyMgWm1pYW5uYSBuYXp3eSBrb2x1bW55IHphd2llcmFqxIVjxIUgbmF6d3kgd29qZXfDs2R6dHcgKGRhbGN6ZWdvIHphIGNod2lsxJkpLg0KYGBge3J9DQpuYW1lcyhwcnp5cm9zdCkNCmBgYA0KDQpgYGB7cn0NCm5hbWVzKHByenlyb3N0KVsyXSA8LSAiTkFNRV8xIg0KbmFtZXMocHJ6eXJvc3QpDQpgYGANCg0KIyMgUG/FgsSFY3puaWUgaW5mb3JtYWNqaSBvIHJva3UgaSBsb2thbGl6YWNqaSB3IGplZG5vIChmdW5rY2phICp1bml0ZSopLg0KYGBge3J9DQpwcnp5cm9zdCA8LSBwcnp5cm9zdCAlPiUNCiAgc2VsZWN0KE5BTUVfMSwgS29kLCBSb2ssIExva2FsaXphY2plLCBXYXJ0b3NjKSAlPiUNCiAgdW5pdGUoInllYXIubG9jYWwiLCBjKFJvaywgTG9rYWxpemFjamUpLCBzZXAgPSAiLiIpDQpgYGANCg0KIyMgUG9zdGHEhyBzemVyb2thIHpiaW9ydSBkYW55Y2ggKGplZG5lIHdpZXJzeiBuYSB3b2pld8OzZHp0d28pLg0KYGBge3J9DQpwcnp5cm9zdC53IDwtIHByenlyb3N0ICU+JQ0KICBwaXZvdF93aWRlcigNCiAgICBuYW1lc19mcm9tID0geWVhci5sb2NhbCwNCiAgICB2YWx1ZXNfZnJvbSA9IFdhcnRvc2MNCiAgKQ0KYGBgDQoNCiMjIEJpYmxpb3RlayAqKnNmKiogZG8gcHJhY3kgeiBkYW55bWkgcHJ6ZXN0cnplbm55bWkuDQpgYGB7cn0NCmxpYnJhcnkoc2YpDQpgYGANCg0KIyMgUG9kY3p5dGFuaWUgcGxpa3Uga29udHVyw7N3IHdvamV3w7NkenR3Lg0KDQpEYW5lIHBvY2hvZHrEhSB6ZSBzdHJvbnkgW2dhZG0ub3JnXShodHRwczovL2dhZG0ub3JnL2RhdGEuaHRtbCkNCmBgYHtyfQ0KZ2FkbV8xc2YgPC0gcmVhZFJEUygiZGFuZS9nYWRtMzZfUE9MXzFfc2YucmRzIikNCmBgYA0KDQojIyBKYWtpZSBzxIUgem1pZW5uZSB3ICpnYWRtXzFzZio/DQpgYGB7cn0NCm5hbWVzKGdhZG1fMXNmKQ0KYGBgDQoNCiMjIEdkemllIHPEhSBuYXp3eSB3b2pld8OzZHp0dz8NCmBgYHtyfQ0KZ2FkbV8xc2YkTkFNRV8xDQpgYGANCg0KIyMgRG/FgsSFY3plbmllIGRhbnljaCBkbyBvYmlla3R1ICpzZiogeiBrb250dXJhbWkgd29qZXfDs2R6dHcuDQpgYGB7cn0NCmdhZG1fMXNmLnAgPC0gZ2FkbV8xc2YgJT4lDQogIGFzLmRhdGEuZnJhbWUoKSAlPiUNCiAgbGVmdF9qb2luKHByenlyb3N0LncpICU+JQ0KICBzdF9hc19zZigpDQpgYGANCg0KIyMgUGllcndzemEgd2Vyc2phIG1hcHkgeiBuYW5pZXNpb255bWkgZGFueW1pIChuaWUgamVzdCBuYWpsZXBzemEpLg0KYGBge3IgZmlnLmhlaWdodD03LCBmaWcud2lkdGg9N30NCmdhZG1fMXNmLnAgJT4lDQogIGdncGxvdCgpICsNCiAgZ2VvbV9zZihhZXMoZmlsbCA9IGAyMDE4LmFsbGApKSArDQogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gInllbGxvdyIsIGhpZ2ggPSAicmVkIikgKw0KICB0aGVtZV9idygpIA0KYGBgDQoNCiMgUGllcndzemEgbWFwYSBpbHVzdHJ1asSFY2EgZGFuZSAoZ3J1cGEgMSkuDQpgYGB7cn0NCnJtKGxpc3QgPSBscygpKQ0KYGBgDQoNClR5bSByYXplbSBkYW5lIGRvdHljesSFICoqcHJ6eXJvc3R1IG5hdHVyYWxuZWdvLCB1cm9kemluIGkgemdvbsOzdyBuYSAxMDAwIGx1ZG5vxZtjaSB3ZyBtaWVqc2NhIHphbWllc3prYW5pYSoqLg0KDQpgYGB7cn0NCnByenlyb3N0IDwtIHJlYWRfZXhjZWwoImRhbmUvTFVETl8zNDI4X1hQSVZfMjAyMDA0MDcxMDQ1MzYueGxzeCIsIA0KICAgICAgICAgICAgICAgICAgICAgICBzaGVldCA9ICJEQU5FIiwgDQogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGMoInRleHQiLCJ0ZXh0IiwgInRleHQiLCAidGV4dCIsICJudW1lcmljIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNraXAiLCAic2tpcCIpKQ0KYGBgDQoNCmBgYHtyfQ0KbmFtZXMocHJ6eXJvc3QpWzNdIDwtIkluZm8iDQpgYGANCg0KYGBge3J9DQpwcnp5cm9zdCA8LSBwcnp5cm9zdCAlPiUNCiAgbXV0YXRlKE5hendhID0gc3RyX3RvX3RpdGxlKE5hendhKSwNCiAgICAgICAgIEluZm8gPSBzdHJfcmVwbGFjZShJbmZvLCAndXJvZHplbmlhIMW8eXdlIG5hIDEwMDAgbHVkbm/Fm2NpJywgInVyb2R6ZW5pYSIpLCANCiAgICAgICAgIEluZm8gPSBzdHJfcmVwbGFjZShJbmZvLCAnemdvbnkgbmEgMTAwMCBsdWRub8WbY2knLCAiemdvbnkiKSwNCiAgICAgICAgIEluZm8gPSBzdHJfcmVwbGFjZShJbmZvLCAncHJ6eXJvc3QgbmF0dXJhbG55IG5hIDEwMDAgbHVkbm/Fm2NpJywgInByenlyb3N0IikpDQpgYGANCg0KYGBge3J9DQpwcnp5cm9zdCA8LSBwcnp5cm9zdCAlPiUNCiAgc2VsZWN0KE5hendhLCBLb2QsIFJvaywgSW5mbywgV2FydG9zYykNCmBgYA0KDQpgYGB7cn0NCnByenlyb3N0IDwtIHByenlyb3N0ICU+JQ0KICB1bml0ZSgicm9rLmluZm8iLCBjKFJvaywgSW5mbyksIHNlcCA9ICIuIikNCmBgYA0KDQpgYGB7cn0NCnByenlyb3N0LncgPC0gcHJ6eXJvc3QgJT4lDQogIHBpdm90X3dpZGVyKA0KICAgIG5hbWVzX2Zyb20gPSByb2suaW5mbywNCiAgICB2YWx1ZXNfZnJvbSA9IFdhcnRvc2MNCiAgKQ0KYGBgDQoNCmBgYHtyfQ0KZ2FkbV8xc2YgPC0gcmVhZFJEUygiZGFuZS9nYWRtMzZfUE9MXzFfc2YucmRzIikNCmBgYA0KDQpgYGB7cn0NCm5hbWVzKGdhZG1fMXNmKQ0KYGBgDQoNCmBgYHtyfQ0KZ2FkbV8xc2YkTkFNRV8xDQpgYGANCg0KYGBge3J9DQpuYW1lcyhwcnp5cm9zdC53KVsxXSA8LSAiTkFNRV8xIg0KbmFtZXMocHJ6eXJvc3QudykNCmBgYA0KDQpgYGB7cn0NCmdhZG1fMXNmLnAgPC0gZ2FkbV8xc2YgJT4lDQogIGFzLmRhdGEuZnJhbWUoKSAlPiUNCiAgbGVmdF9qb2luKHByenlyb3N0LncpICU+JQ0KICBzdF9hc19zZg0KYGBgDQoNCmBgYHtyfQ0KZ2FkbV8xc2YucCAlPiUNCiAgZ2dwbG90KCkgKw0KICBnZW9tX3NmKGFlcyggZmlsbCA9IGAyMDE4LnVyb2R6ZW5pYWApKSArDQogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gInllbGxvdyIsIGhpZ2ggPSAicmVkIikNCmBgYA0KIyBQcmFjYSBkb21vd2ENCg0KRG8gd3lrb25hbmlhIGplZG5hIHogbWFwIC0gaWx1c3RyYWNqYSBkYW55Y2ggeiAqYmRsKiAqR1VTKi4NCkRhbmU6DQoNCjEuIFJZTkVLIE5JRVJVQ0hPTU/FmkNJLg0KMi4gUllOS09XQSBTUFJaRURBxbsgTE9LQUxJIE1JRVNaS0FMTllDSC4NCjMuIMWacmVkbmlhIGNlbmEgemEgMSBtMiBsb2thbGkgbWllc3prYWxueWNoIHNwcnplZGFueWNoIHcgcmFtYWNoIHRyYW5zYWtjamkgcnlua293eWNoLg0KDQpNYXBhDQoNCjEuKG1vxbxuYSB6ZG9iecSHIG1ha3N5bWFsbmllIDgwJSBwdW5rdMOzdykgLSBtYXBhIGRsYSB3b2pld8OzZHp0dyAtIGFuYWxvZ2ljem5hIGRvIHd5a29uYW5hamUgbmEgbGFib3JhdG9yaXVtLg0KMi4obW/FvG5hIHpkb2J5xIcgbWFrc3ltYWxuaWUgMTAwJSBwdW5rdMOzdykgLSBtYXBhIGRsYSBwb3dpYXTDs1cgd29qZXfDs2R6dHdhIHBvZGxhc2tpZWdvIC0gbmFsZcW8eSB1xbx5xIcgb3BjamkgZmlsdHJvd2FuaWEuDQoNCmBgYHtyIGluY2x1ZGUgPSBGQUxTRX0NCmRldGFjaChwYWNrYWdlOnJlYWR4bCkNCg0KZGV0YWNoKHBhY2thZ2U6dGlkeXZlcnNlKQ0KZGV0YWNoKHBhY2thZ2U6Z2dwbG90MikNCmRldGFjaChwYWNrYWdlOnRpYmJsZSkNCmRldGFjaChwYWNrYWdlOnRpZHlyKQ0KZGV0YWNoKHBhY2thZ2U6cmVhZHIpDQpkZXRhY2gocGFja2FnZTpwdXJycikNCmRldGFjaChwYWNrYWdlOmRwbHlyKQ0KZGV0YWNoKHBhY2thZ2U6c3RyaW5ncikNCmRldGFjaChwYWNrYWdlOmZvcmNhdHMpDQoNCmRldGFjaChwYWNrYWdlOnNmKQ0KYGBg