TGViewer
Запасник экономиста Запасник экономиста @econbox · 1.23K subscribers
Post #192 623
Конструктор гистограмм

Для оперативной оценки распределения темпов прироста выпуска по важнейшим товарным позициям подготовил очередную функцию (уже использовал ее в недавнем докладе — помогает наглядно увидеть долю товаров с растущим и падающим выпуском).

Входящих параметров два:
🔘 полный 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)


Результат применения — в первом комментарии
  • ✍ 6
  • 👍 5
  • ⚡ 2
More from @econbox
  1. Sep 25, 2026Летний список Три базы данных, о которых я узнал этим летом. 1️⃣ CEPII IntenSE (Intensity…
  2. Sep 18, 2026Потребление капитала Важный шаг на пути включения межстрановых потоков капитала в междунар…
  3. Sep 17, 2026Посещение по талонам ‘Индекс напряженности вокруг Тайваня’ = ‘Number of Visitor Arrivals (…
  4. Sep 16, 2026ИИ как коуч Новый препринт о том, как влияет использование ИИ на эффективность работы — эк…
  5. Sep 2, 2026Осуждение острова Чеховский «Остров Сахалин» безупречен по стилю, и это ожидаемо, но он та…
  6. Aug 27, 2026Косячок от ВБ Всемирный банк в июле обновил свои индикаторы, но некоторые вещи сделаны стр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →