【问题标题】:2D Histogram in R: Converting from Count to Frequency within a ColumnR 中的 2D 直方图:在列中从计数转换为频率
【发布时间】:2014-05-27 02:13:16
【问题描述】:

希望能帮助您生成频率的二维直方图,其中频率是在列中计算的。我的主要问题:从计数转换为基于列的频率。

这是我的起始代码:

# 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

对于如何计算列内频率的任何帮助,我将不胜感激。

谢谢! 江淮

编辑:我认为解决方案需要以下步骤 1) 计算并存储每个 x 间隔因子的总计数 2) 将单个 bin 计数除以其相应的 x 间隔因子计数以获得频率。

但不确定如何执行此操作。 .

【问题讨论】:

  • 注意:我已经在 MATLAB 中的数据框之外完成了这项工作...希望找到一种使用 R 的方法。几周前刚开始学习该语言!

标签: r frequency heatmap histogram2d


【解决方案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))

【讨论】:

  • @Jac 所以你希望每个“列”都以某种方式“求和”,对吧?我已经更新了我的代码。
  • @Jac 仔细检查代码。我也把sum 拿出来了。这不再需要。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 2011-12-06
  • 2016-09-17
  • 2020-08-08
  • 2016-08-03
  • 2020-01-27
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多