r-如何将Month变量从1到12排序?当使计数累加时,这就成了一个问题,然后累加的数字就会出错



所以我需要将月份变量从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)

相关内容

最新更新