所以我需要将月份变量从1,2,3,4…,12排序。同时,区域和年份需要分开。我有正确的地区和年份,所以除了日期排序错误之外,df都是最完整的。
如何做到这一点?
library(tidyverse)
library(rvest)
library(lubridate)
library(purrr)
library(ggplot2)
url <- "https://w2.brreg.no/kunngjoring/kombisok.jsp?datoFra=01.01.2019&datoTil=31.12.2019&id_region=0&id_niva1=51&id_niva2=56&id_bransje1=0"
url2 <- "https://w2.brreg.no/kunngjoring/kombisok.jsp?datoFra=01.01.2020&datoTil=31.12.2020&id_region=0&id_niva1=51&id_niva2=56&id_bransje1=0"
scraped <- Sys.time()
#Scraper ut data fra URL1 og gjør om list til datasett
konkurs2019 <- url %>%
read_html() %>%
html_nodes(xpath = "//table") %>%
html_nodes("table") %>%
html_table() %>% .[[1]]
#
konkurs2020 <- url2 %>%
read_html() %>%
html_nodes(xpath='//table') %>%
html_nodes("table") %>%
html_table() %>% .[[1]]
# Lager longdata
all_konkurs <- rbind(konkurs2019,konkurs2020)
# Velger kolonner og gir nytt navn til de.
#Bruker mutate for å putte inn ny rad "region" og fylle den raden med de gitte fylkene.
# Filtrer vekk "Utenlands" og Orgnr med med mindre en 8 siffer (privatpersoner)
all_konkurs <-select(all_konkurs,X2,X4,X6,X8)%>%
rename("Selskap" = X2,"Org.nummer" = X4,"Dato" = X6,"Melding" = X8) %>%
mutate(Fylke=ifelse(grepl("[^Dato][A-Za-z]", Dato), Dato, NA))%>%
fill(Fylke) %>% filter(Melding == "Konkursåpning") %>%
filter(Fylke != "Utenlands") %>% filter(nchar(Org.nummer) >8)
#rm(all_konkurs)
# Gjør dato variabelen om fra "char" til "Date"
all_konkurs$Dato <- as.Date(all_konkurs$Dato,format="%d.%m.%Y")
# Deler opp dato variabelen til måned og år
all_konkurs <- all_konkurs %>% separate(Dato, into = c("Year","Month"), sep = "-")
# Lager en count av for antall konkurser for hver måned i hvert fylke.
# Filterer vekk slik at jeg kun får max count for hver måned.
all_konkurs <- all_konkurs %>%
group_by(Fylke,Month,Year) %>%
mutate(count=row_number()) %>%
filter(count == max(count))
#Gjør "count" om til kumulative
all_konkurs <- all_konkurs %>% group_by(Fylke,Year) %>% mutate(cm_count = cumsum(count))
# Lager plot av de kumulative verdiene
all_konkurs%>% ggplot(aes(x=Month, y=cm_count, group=Year))+
geom_line(aes(color=Year))+
facet_wrap(~Fylke)+xlab("Måned")+ylab("Kumulativ form")+ggtitle("Konkurser i Norge")
您可以使用lubridate
函数来提取年份和月份,而不是separate(Dato, into = c("Year","Month"), sep = "-")
,然后排列:
all_konkurs <- all_konkurs %>%
mutate(Year=year(Dato), Month = month(Dato)) %>%
arrange(Year, Month)