Для оперативной оценки распределения темпов прироста выпуска по важнейшим товарным позициям подготовил очередную функцию (уже использовал ее в недавнем докладе — помогает наглядно увидеть долю товаров с растущим и падающим выпуском).
Входящих параметров два:
🔘 полный URL новости Росстата
[из серии "О промышленном производстве"]
🔘 желаемая ширина столбиков гистограммы
Функция в R:
gprod <- function(url, bin=2) {
require("rvest")
require("glue")
require("ggplot2")
url <- gsub("s://","://ssl.",url)
x <- read_html(url)
tab_4 <- html_table(x, fill=TRUE)[[4]]
tab_4 <- tab_4[,c(1,ncol(tab_4))]
names(tab_4) <- c("Product","Growth")
axis_x <- tolower(tab_4$Growth[1])
tab_4 <- subset(tab_4[-c(1,2,nrow(tab_4)),], Growth!="")
tab_4$Growth <- as.numeric(gsub("\\,",".",tab_4$Growth))
tab_4 <- tab_4[!grepl("рублей", tab_4$Product), ]
tab_4 <- tab_4[grepl("^[А-Я]", tab_4$Product), ]
tab_4$Product <- gdata::trim(tab_4$Product)
shPlus <- length(tab_4$Product[tab_4$Growth>100])/
length(tab_4$Product)*100
shPlus <- round(shPlus, 0)
shMinus <- 100-shPlus
shPlus <- glue("{shPlus}%")
shMinus <- glue("{shMinus}%")
fig <- ggplot(tab_4, aes(x = Growth-100)) +
theme_minimal(base_size=16) +
geom_histogram(aes(y=after_stat(count)),
binwidth=bin, fill="lightblue") +
geom_density(aes(y=after_stat(density)*nrow(tab_4)*bin),
color="black") +
geom_vline(xintercept=0, col="red",
linetype="dashed") +
scale_y_continuous(expand=c(0.02,0), n.breaks=6) +
scale_x_continuous(n.breaks=8) +
xlab(glue("Прирост выпуска важнейших видов продукции,
{axis_x}")) +
ylab(NULL) +
annotate("text", x=c(-20,20), y=c(Inf,Inf),
label=c(shMinus, shPlus), size=6, vjust=1,
fontface='italic', family="sans",
col=c("red4","green4"), alpha=0.7)
fig
}Пример использования:
url <- "https://rosstat.gov.ru/storage/mediabank/127_27-08-2025.html"
gprod(url, bin=2)
Результат применения — в первом комментарии