-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPowerBI.R
306 lines (211 loc) · 13.4 KB
/
PowerBI.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
library(readr)
library(tidyverse)
library(ggthemes)
library(plotly)
#### Henter inn besøkstatistikk fra statisk fil hentet fra Google Analytics. Antall ansatte hentes fra statisk fil fra Arbeidstakerregisteret(via Stryk-08)
setwd("C:\\Users\\torm\\OneDrive - Kompetanse Norge\\Dokumenter\\GitHub\\stats_ga_utdanning")
# Importere TSV-fil i R
ga_pw_utdanningno_data <- as_tibble(read_delim("./data/ga_pw_utdanningno_data.tsv", "\t",
na = "NULL",
escape_double = FALSE,
col_types = cols(
year = col_integer(),
page_views = col_integer(),
unique_page_views = col_integer(),
entrances = col_integer(),
avg_time_on_page = col_time(format = "%H:%M:%S")
),
locale = locale(date_names = "nb"),
trim_ws = TRUE))
#View(ga_pw_utdanningno_data)
#Henter inn data fra arbeidstakerregisteret
employment <- as_tibble(read_delim("./data/yrkesbeskrivelse_antall_ansatte.tsv", "\t"))
emp <- employment %>%
select(page_title, antall_ansatte) %>%
mutate(rank_ansatte= percent_rank(antall_ansatte)*100, rank_ansatte_gruppe = ifelse(percent_rank(antall_ansatte)>.8, "Høyt antall ansatte", ifelse(percent_rank(antall_ansatte)>.3, "Middels antall ansatte", "Lavt antall ansatte")))
ga_pw_utdanningno_data <- left_join(ga_pw_utdanningno_data, emp, by= "page_title")
### Finner de mest besøkte yrkessidene i 2013 og 2021
df.21 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2021, page_type == "yrke") %>%
slice_max(page_views_pst, n=10) %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
df.13 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2013, page_type == "yrke") %>%
slice_max(page_views_pst, n=10) %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
#### 2013
(top10.13 <- df.13$page_title)
#### 2021
(top10.21 <- df.21$page_title)
#Sykepleier, ingeniør, psykolog, lege, advokat og helefagarbeider går igjen blant de 10 mest besøkte yrkene både i 2013 og 2021. Fellesnevneren er at dette er statusyrker og/eller knyttet til helse.
### Utviklingen i besøkssandel fra 2013 til 2021 for de mest besøkte yrkene i 2021 og 2013
#Sykepleier er det klart mest besøkte yrket (med untak av i 2014 der ingeniør lå høyest). I 2021 har 67 400 (0,85 prosent av alle sidevisninger) besøkt yrketbeskrivelsen. Neste på lista er psykolog med 36 300 (0,46 prosent). Sykepleier har nesten dobbelt så mange besøk som psykolog.
df.1 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, page_type == "yrke") %>%
select(page_title, year, page_views_pst, page_views, rank_ansatte, rank_ansatte_gruppe) %>%
arrange(desc(page_views_pst))
df.2 <- df.1[df.1$page_title %in% top10.21,]
# df.2 %>%
# select(page_title, year, rank_ansatte, rank_ansatte_gruppe) %>%
# filter(year == 2021) %>%
# rename(Yrke = page_title)
a <- ggplot(df.2, aes(x=as.character(year), y=page_views_pst*100, group= page_title, text= paste("Yrke:", page_title)))
a <- a + geom_line(aes(color= page_title, label=rank_ansatte_gruppe, label2= rank_ansatte), size= 1) + xlab("År") + ylab("Prosentandel av sidevisninger") + labs(color= "Yrke", title="Utvikling til de mest besøkte yrkesbeskrivelsene i 2021") +
ggthemes::theme_economist()
ggplotly(a, tooltip = c("label", "label2","text"))
#Ved å holde markøren over et yrke i grafen vises informasjon om antall ansatte med det yrket. Høyt antall ansatte er definert som de 20% yrkene med flest ansatte. Verdien rank_ansatt angir hvor vanlig yrket er fra 100 (yrket med flest ansatte) til 0 (yrket med færrest ansatte).
df.3 <- df.1[df.1$page_title %in% top10.13,]
# df.3 %>%
# select(page_title, year, rank_ansatte, rank_ansatte_gruppe) %>%
# filter(year == 2013) %>%
# rename(Yrke = page_title)
b <- ggplot(df.3, aes(x=as.character(year), y=page_views_pst*100, group= page_title, text= paste("Yrke:", page_title)))
b <- b + geom_line(aes(color= page_title, label=rank_ansatte_gruppe, label2= rank_ansatte), size= 1) + xlab("År") + ylab("Prosentandel av sidevisninger") +
labs(color= "Yrke", title="Utvikling til de mest besøkte yrkesbeskrivelsene i 2013") +
ggthemes::theme_economist()
ggplotly(b, tooltip = c("label", "label2","text"))
# De mest besøkte yrkesbeskrivelsene fra 2013 har med unntak av sykepleier gått ned eller stagnert målt etter prosentandel sidevisninger. Det kan forklares av at mange nye yrker har kommet inn i denne perioden. Det kan likevel nevnes at det er en klar nedgang i besøk for ingeniør og til dels siviløkonom.
# ```
#
# ```{r stolpediagram, include=F}
# # stolpediagram i Ggplot2
# # "year" på ordinalnivå for å vise alle år
# ggplot(df_sykepleier, aes(x=as.character(year), y=page_views_pst*100)) +
# xlab("År") + ylab("Prosentandel av sidevisninger") +
# geom_bar(stat="identity", fill="steelblue") +
# geom_text(aes(label=page_views), vjust=1.6, color="white", size=3.5) +
# labs(title = "Sidevisninger på yrket sykepleier") +
# # ggthemes::theme_economist() + ggthemes::scale_colour_economist()
# ggthemes::theme_fivethirtyeight()
# ```
### Hvilke yrketsbeskrivelser har størst endring i besøk mellom 2013 og 2021
# ```{r, echo=F, include=F}
df.4 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2021 | year== 2013, page_type == "yrke") %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
freq <- data.frame(table(df.4$page_title)) #number of occurences
yrke.2years <- as.character(freq$Var1[freq$Freq == 2]) #finding ocupations with both years
df.5 <- df.4[df.4$page_title %in% yrke.2years,] #excluding ocupations with only one occurence
# df.5 <- df.5[order(df.5$page_title),]
df.5.13 <- df.5[df.5$year == 2013,] #object for 2013
#df.5.13 <- df.5.13[order(df.5.13$page_title),]
df.5.13 <- arrange(df.5.13, page_title)
df.5.21 <- df.5[df.5$year == 2021,] #object for 2021
df.5.21 <- arrange(df.5.21, page_title)
#test that both years are sorted correct
all.equal(df.5.13[,1], df.5.21[,1]) #should be true
#new df with difference 2021 and 2013
diff <- data.frame(df.5.13$page_title, df.5.13$page_views_pst, df.5.21$page_views_pst, df.5.21$page_views_pst-df.5.13$page_views_pst)
names(diff) <- c("page_title", "2013", "2021", "increase_page_views_pst")
diff <- arrange(diff, desc(increase_page_views_pst))
diff.1 <- bind_rows(slice_head(diff,n=5), slice_tail(diff, n=5)) #looking only at a few
diff.2 <- bind_rows(slice_head(diff,n=20), slice_tail(diff, n=20)) #looking only at some more
diff.2 <- left_join(diff.2, emp, by="page_title") # joining with employment data
diff.2 <-diff.2 %>%
select(-antall_ansatte) %>%
mutate_if(is.numeric, round,4) %>%
mutate(rank_ansatte = round(rank_ansatte, 1)) %>%
mutate(rank_ansatt_gruppe = word(rank_ansatte_gruppe, 1)) %>%
rename(yrke=page_title, endring_pst=increase_page_views_pst, rank_gruppe=rank_ansatt_gruppe) %>%
select(-rank_ansatte_gruppe)
# ```
#### Tabell med de 40 yrkene med størst endring i prosentvise sidevisninger fra 2013 til 2021.
#
# De 20 første har størst økning (høyest økning først), mens de 20 siste har størst nedgang. Tabellen viser at det primært er yrker med mange ansatte som har de største endringene. Kun 7 yrker er under medianen av antall ansatte (rank_ansatt<50).
#
#
# ```{r, echo=F, warning=F, fig.width=10}
# knitr::kable(diff.2)
# Plot occupations with largest effect
diff.long <- diff.1 %>%
gather("year", "page_views_pst", '2013':'2021')
#Join with employment data
diff.long <- left_join(diff.long, emp, by="page_title")
c <- ggplot(diff.long, aes(x=as.character(year), y=page_views_pst*100, group= page_title, text= paste("Yrke:", page_title)))
c <- c + geom_line(aes(color= page_title, label= rank_ansatte_gruppe, label2= rank_ansatte), size= 1) + xlab("År") + ylab("Prosentandel av sidevisninger") + labs(color= "Yrke", title = "Endring i prosentandel sidevisinger til de yrkene m størst endring fra 2013 til 2021") +
ggthemes::theme_economist()
ggplotly(c, tooltip = c("label", "label2","text"))
# ```
# Oppsummert ser vi at økningen er høyest for yrker innenfor omsorg og helse med relativt mange ansatte. Det er dermed ikke de best betalte yrkene/prestisjeyrker som har størst økningen i besøk. Likevel ser vi en økning for blant annet aksjemegler, pilot og advokat.
#
# Besøksandelen har gått ned for yrker ned for annerkjente yrker med høyt antalle ansatte. Noen av disse har det vært oppmerksomhet rundt behov i tiden fremover feks: ingenør og dataingenør.
#
# # Ser på utvikling for utdanningsbeskrivelser
#
# ```{r, include=F}
dfu.21 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2021, page_type == "utdanningsbeskrivelse") %>%
slice_max(page_views_pst, n=10) %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
dfu.13 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2013, page_type == "utdanningsbeskrivelse", page_title!="") %>%
slice_max(page_views_pst, n=10) %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
(top10.13u <- dfu.13$page_title)
top10.13u <- na.omit(top10.13u)
(top10.21u <- dfu.21$page_title)
# ```
#
# #### Utvikling i prosentandel av sidevisninger over tid for de mest besøkte utdanningsbeskrivelsene i 2013 and 2021
# ```{r, echo=F, fig.width=10}
dfu.1 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, page_type == "utdanningsbeskrivelse") %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
dfu.2 <- dfu.1[dfu.1$page_title %in% top10.21u,]
e <- ggplot(dfu.2, aes(x=as.character(year), y=page_views_pst*100, group= page_title, text= paste("Utdanning:", page_title)))
e <- e + geom_line(aes(color= page_title), size= 1) + xlab("År") + ylab("Prosentandel av sidevisninger") + labs(color= "Utdanningsbeskrivelse", title="Utvikling til de mest besøkte Utdanningsbeskrivelsene i 2021") + ggthemes::theme_economist()
ggplotly(e, tooltip = "text")
# ```
# Økningen i besøk for utdanningsbeskrivelser følger det vi så for ykene. Sykepleie og psykologiutdanningen er mest besøkt. Disse yrkene lå også øverst i 2021.
# Merk: Det er en datafeil for Sykpleier 2019 og Vidreutdanning for sykepleiere 2021. Fallet vi ser for disse to punktene er ikke reelt.
# ```{r, echo=F, fig.width=10}
dfu.3 <- dfu.1[dfu.1$page_title %in% top10.13u,]
f <- ggplot(dfu.3, aes(x=as.character(year), y=page_views_pst*100, group= page_title, text= paste("Utdanning:", page_title)))
f <- f + geom_line(aes(color= page_title), size= 1) + xlab("År") + ylab("Prosentandel av sidevisninger") + labs(color= "Utdanningsbeskrivelse", title="Utvikling til de mest besøkte Utdanningsbeskrivelsene i 2013") +
ggthemes::theme_economist()
ggplotly(f, tooltip = "text")
# ```
#
#
#
# ### Hvor endringen i interesse vært størst for utdanningsbeskrivelser
#
# ```{r, include=F}
dfu.4 <- ga_pw_utdanningno_data %>%
filter(page_views_pst < 1, year == 2021 | year== 2013, page_type == "utdanningsbeskrivelse") %>%
select(page_title, year, page_views_pst, page_views) %>%
arrange(desc(page_views_pst))
freq.u <- data.frame(table(dfu.4$page_title)) #number of occurences
ut.2years <- as.character(freq.u$Var1[freq.u$Freq == 2]) #finding ocupations with both years NB: Some education programs have 3 or 4 occurences
dfu.5 <- dfu.4[dfu.4$page_title %in% ut.2years,] #excluding ocupations with more or less occurences
dfu.5.13 <- dfu.5[dfu.5$year == 2013,] #object for 2013
dfu.5.13 <- arrange(dfu.5.13, page_title)
dfu.5.21 <- dfu.5[dfu.5$year == 2021,] #object for 2021
out <- data.frame(table(dfu.5.21$page_title)) #Helseadminstrasjon comes twice in 2021
out <- as.character(out$Var1[out$Freq != 1])
dfu.5.21 <- dfu.5.21[! dfu.5.21$page_title %in% out,]
dfu.5.21 <- arrange(dfu.5.21, page_title)
#test that both years are sorted correct
all.equal(dfu.5.13[,1], dfu.5.21[,1]) #should be true
# ```
# Tilsvarende tabell som for yrkene. De 20 utdanningene med mest økning øverst og de med størst nedgang er de 20 nederste radene. Nesten alle utdanningene har en prosentvising økning. Det usikkert for meg hvordan dette har seg.
#
# Handel og markedsføring og Økonomi og adminstrasjon har den klart største nedgangen. Derimot har Økonomisk-adminstrative fag en tydelig oppgang. De to sistnevnte virker kun som en navneendring og endringen mellom dem ser ikke reell ut.
#
# ```{r, echo=F}
#new df with difference 2021 and 2013
diff.u <- data.frame(dfu.5.13$page_title, dfu.5.13$page_views_pst, dfu.5.21$page_views_pst, dfu.5.21$page_views_pst-dfu.5.13$page_views_pst)
names(diff.u) <- c("page_title", "page_views_pst_13", "page_views_pst_21", "increase_page_views_pst")
diff.u <- arrange(diff.u, desc(increase_page_views_pst))
diff.u1 <- bind_rows(slice_head(diff.u,n=5), slice_tail(diff.u, n=5)) #looking only at a few
diff.u2 <- bind_rows(slice_head(diff.u,n=20), slice_tail(diff.u, n=20)) #looking only at some more
diff.u2 <- diff.u2 %>%
rename(Utdanning=page_title, Endring_pst=increase_page_views_pst, '2013'=page_views_pst_13, '2021'=page_views_pst_21)
knitr::kable(diff.u2)
# ```