如何解决如何对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")
解决方法
您可以使用separate(Dato,into = c("Year","Month"),sep = "-")
函数代替lubridate
提取年份和月份,然后安排:
all_konkurs <- all_konkurs %>%
mutate(Year=year(Dato),Month = month(Dato)) %>%
arrange(Year,Month)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。