---
title: "R Notebook"
output: html_notebook
editor_options: 
  chunk_output_type: inline
---

# Packages

```{r}
library(tidyverse)
library(data.table)
library(readxl)
library(VIM)
library(vcd)
```

## GUS Data

Read raw data
```{r}
gus_woj <- fread("../data-raw/POPYT_POZNAN_2011_2017.csv") %>%
  rename( kwartal = 3, woj = 4) %>%
  select(rok = ROK, kwartal, woj, ends_with("1"), -P6_011, -V1) %>%
  filter(rok %in% 2011:2014, kwartal == 1, woj != "POLSKA") %>%
  mutate(woj = str_pad(woj,2,"0",side = "left")) %>%
  gather(zawody, liczba, -rok, -kwartal,-woj)  %>%
  mutate(zawody = str_replace(zawody, "P6_",""),
         zawody = str_replace(zawody, "1$",""),
         zawody = as.numeric(zawody),
         zawod1 = case_when(zawody %in% 2:5 ~ 1,
                            zawody %in% 6:11 ~ 2,
                            zawody %in% 12:16 ~ 3,
                            zawody %in% 17:20 ~ 4,
                            zawody %in% 21:24 ~ 5,
                            zawody %in% 25:27 ~ 6,
                            zawody %in% 28:32 ~ 7,
                            zawody %in% 33:35 ~ 8,
                            zawody %in% 36:41 ~ 9)) %>%
  group_by(rok, kwartal, woj, zawod1) %>%
  mutate(zawod2 = paste0(zawod1, row_number())) %>%
  ungroup() 
```



Read data from excel spreadsheets

```{r}
dir(path = "../data-raw", pattern = "*00", full.names = T) %>%
  set_names(basename(.)) %>%
  map_df(~read_excel(path = .x, sheet = "Arkusz5", skip = 9, col_names = F) %>%
            filter(`...1` != "OGÓŁEM") %>%
            set_names(nm = c("zawod","ogolem", LETTERS[1:19])) %>%
            select(-ogolem) %>%
            mutate(kod = str_extract(zawod, "\\d{1,2}\\."),
                   kod = str_replace(kod, "\\.", ""),
                   kod = as.numeric(kod)) %>%
            filter(kod > 10) %>%
            gather(sekcja, wolne, -kod, -zawod) %>%
            filter(wolne > 0), 
         .id = "rok") %>%
  mutate(rok = readr::parse_number(rok),
         kod1 = substr(kod, 1,1))  %>%
  rename(kod2 = kod) %>%
  select(rok, kod1, kod2, zawod, sekcja, wolne) -> gus_sek
```

```{r}
gus_sek %>%
  count(rok, wt = wolne)
```


Joining two things together

```{r}
gus_sek %>%
  select(-zawod) %>%
  mutate(kod1 = as.numeric(kod1)) %>%
  bind_rows(gus_woj %>% 
              mutate(kod2 = as.numeric(zawod2)) %>%
              select(rok, woj, kod1 = zawod1, kod2 , woj, wolne = liczba)) -> gus_dane
```

```{r}
saveRDS(object = gus_dane, file = "../data/gus-woj-sek.rds")
```


Data with standard errors

```{r}
d2011 <- read.table("../data-raw/popyt-2011", header = F, sep  = ";", dec = ",", stringsAsFactors = F) %>%
  select(sekcja = V1, prec = V3) %>%
  mutate(rok = 2011)

d2013 <- read_excel("../data-raw/PW_popyt_na_prace_w_2013.xls", col_names = F, skip = 31) %>%
  na.omit() %>%
  mutate(sekcja = d2011$sekcja) %>%
  select(sekcja, prec = 3)%>%
  mutate(rok = 2013)
  
d2014 <- read_excel("../data-raw/popyt_na_prace_2014.xls", col_names = F, skip = 31) %>%
  na.omit() %>%
  mutate(sekcja = d2011$sekcja) %>%
  select(sekcja, prec = 3) %>%
  mutate(rok = 2014)

precs <- bind_rows(d2011,d2013, d2014)
```


Add bootstrap population data


```{r}
gus_dane %>%
  filter(is.na(woj))  %>%
  count(rok, sekcja, wt = wolne) %>%
  left_join(precs) %>%
  filter(rok != 2012) %>%
  na.omit() %>%
  mutate(sd = n*prec/100) -> pop_data_with_prec
```

```{r}
gus_dane %>%
  filter(is.na(woj), sekcja %in% unique(pop_data_with_prec$sekcja)) %>%
  count(rok, sekcja, kod2, wt  = wolne) %>%
  add_count(rok, sekcja, wt = n, name = "total") %>%
  mutate(p = n / total) -> zawody_sekcje
```

Bootstraping totals

```{r}
b <- 1000
pop_data_with_prec %>%
  group_by(rok, sekcja) %>%
  do(b = 1:b,
     n_hat = round(rnorm(n = b, mean = .$n[[1]], sd = .$sd[[1]]))) %>%
  unnest() %>%
  left_join( zawody_sekcje %>% select(rok, sekcja, kod2, p)) %>%
  mutate(hat_wolne = round(p*n_hat)) -> boot_pop

boot_pop
```

```
set.seed(123)
pop_totals %>%
  group_by(rok, r, b) %>%
  do(res = rmultinom(n = 100, size = .$r[[1]], p = .$data[[1]]$p) %>% as.data.frame(),
     kod2 = .$data[[1]]$kod2,
     sekcja = .$data[[1]]$sekcja) %>%
  group_by(rok, b) %>%
  unnest(kod2, sekcja, res) %>%
  ungroup() %>%
  arrange(rok, r, b) %>%
  gather(b2, wolne, V1:V100) %>%
  mutate(b2 = gsub("V", "", b2),
         b2 = as.numeric(b2)) %>%
  arrange(rok, b, b2) -> pop_totals2
```


```{r}
saveRDS(boot_pop, file = "../data/gus-woj-sek-boot-totals.rds")
```





## BKL Data

```{r}
nace_sek <- readRDS("../data/bkl-finalne-model.rds") %>%
  ungroup() %>%
  count(sekcja_pkd, nace) %>%
  select(-n) %>%
  filter(!is.na(sekcja_pkd))
```

```{r}
bkl <- readRDS("../data/bkl-oferty.rds") %>%
  filter(rok != 2010) %>%
  mutate(woj = str_pad(woj, 2, "0", side = "left"),
         sekcja_pkd = as.character(sekcja_pkd),
         zawod_9grup = ifelse(is.na(zawod_9grup), substr(zawod,1,1), zawod_9grup)) %>%
  rename(id = plik, zawod6 = zawod, zawod1 = zawod_9grup) %>%
  left_join(nace_sek) %>%
  select(id, rok, zrodlo, forma_ogl, zrodlo_dokladne, zawod1, zawod6, 
         woj, podregion, nace, sekcja_pkd2, branza, wyksztalcenie, jezyk_angielski:komp_biurowe)
```

```{r}
saveRDS(bkl, "../data/bkl-before-imp.rds")
```


