Контекст
Предположим, что 2D-данные data.frame доступны в https://www.r-graph-gallery.com/2d-density-plot-with-ggplot2.html
Данные
#library(tidyverse)
a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2))
b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9))
c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9))
data <- rbind(a,b,c)
Диаграмма рассеяния и плотность
Предположим, теперь объект ggplot "ggobj" включает в себя функцию geom_density2d с 10 ячейками (то есть с 10 по 10 процентили 2Dkde распределение):
ggobj <- ggplot(data, aes(x=x, y=y)) +
geom_point() +
geom_density2d(aes(x=x, y=y), bins=10)
Вопрос
Как добавить третий столбец с именем "out" в data.frame "data", который бы классифицировал данные вне внешнего контур как «0» (т.е. вне 90-го процентиля), а контур как «1» (т.е. внутри 90-го процентиля)?
Примечание:
1) Было бы желательно получить подробное объяснение ( то есть какие данные, слои ... из "ggobj" используются, какие дополнительные функции ...)
2) Код для раскраски графиков, помеченных как "out" красным, также был бы очень полезен.