Гистограмма / график плотности из перекрывающихся неравномерных ячеек и отсчетов

#r

#r

Вопрос:

У меня есть данные, в которых количество выборок было предварительно рассчитано для ячеек в диапазоне, и ячейки имеют перекрывающиеся и неравномерные размеры. Выглядит примерно так:

 x2 <- data.frame("BinFrom" = c(1,1,2,2,4,4,4,5,5,5,8,8,8,9,11,14,17,18,19), 
                "BinTo" = c(3,6,4,8,5,8,6,10,12,6,7,15,11,10,20,20,18,19,20), 
                "Count" = c(1000,2400,15,2000,20,3800,10,6000,4200,10,25,3000,2800,10,1300,9000,10,5,40))
  

Я хочу сгенерировать гистограмму и график плотности для этих данных. Есть ли способ сделать это?

ggdensity и т.д. Ожидают расширенных данных. Я попытался форсировать этот формат, расширив среднюю точку ячеек, например:

 x2 <- x2 %>% mutate(MidBin = BinFrom   ((BinTo-BinFrom)/2))
xp <- x2 %>% expandRows(., "Count") 
ggdensity(xp, "MidBin")
  

но это приводит к потере важных данных и невозможно с моим фактическим фреймом данных, поскольку расширение строк исчерпывает векторную память.

Любая помощь приветствуется

Комментарии:

1. Если этот комментарий предназначен для добавления информации к вопросу, отредактируйте вопрос. Если это ответ, опубликуйте ответ на свой вопрос и примите этот ваш ответ.

Ответ №1:

Создайте новую матрицу и базу подсчета -перекрытие

 base=cbind.data.frame(base=c(min(x2$BinFrom):max(x2$BinTo)))
base$overlap=sapply(base$base,function(x) sum(x2$Count[x >= x2$BinFrom amp; x <= x2$BinTo ])) 
  

график

 ggplot(base,aes(x=base,y=overlap)) geom_bar(stat = "identity")
#or
ggplot(base,aes(x=base,y=overlap)) geom_area(alpha=0.25)