2D гистограмма в R: преобразование из числа в частоту в столбце
Был бы признателен за помощь в создании 2D гистограммы частот, где частоты рассчитываются в столбце. Моя главная проблема: преобразование из числа в частоту столбца.
Вот мой стартовый код:
# expected packages
library(ggplot2)
library(plyr)
# generate example data corresponding to expected data input
x_data = sample(101:200,10000, replace = TRUE)
y_data = sample(1:100,10000, replace = TRUE)
my_set = data.frame(x_data,y_data)
# define x and y interval cut points
x_seq = seq(100,200,10)
y_seq = seq(0,100,10)
# label samples as belonging within x and y intervals
my_set$x_interval = cut(my_set$x_data,x_seq)
my_set$y_interval = cut(my_set$y_data,y_seq)
# determine count for each x,y block
xy_df = ddply(my_set, c("x_interval","y_interval"),"nrow") # still need to convert for use with dplyr
# convert from count to frequency based on formula: freq = count/sum(count in given x interval)
################ TRYING TO FIGURE OUT #################
# plot results
fig_count <- ggplot(xy_df, aes(x = x_interval, y = y_interval)) + geom_tile(aes(fill = nrow)) # count
fig_freq <- ggplot(xy_df, aes(x = x_interval, y = y_interval)) + geom_tile(aes(fill = freq)) # frequency
Буду признателен за любую помощь в том, как рассчитать частоту в столбце.
Спасибо! JAC
РЕДАКТИРОВАТЬ: Я думаю, что решение потребует следующих шагов: 1) Рассчитать и сохранить общее количество для каждого фактора x-интервала 2) Разделить количество отдельных бинов на соответствующий им коэффициент x-интервала для получения частоты.
Не уверен, как это осуществить, хотя.,
1 ответ
Если вы хотите нормализовать значения x_interval, вы можете создать столбец с количеством за интервал, а затем разделить на это. Я должен признать, что я не ddply
Wiz, так что, может быть, есть более простой способ, но я бы сделал
xy_df$xnrows<-with(xy_df, ave(nrow, x_interval, FUN=sum))
затем
fig_freq <- ggplot(xy_df, aes(x = x_interval, y = y_interval)) +
geom_tile(aes(fill = nrow/xnrows))