R ggplot2使用..计数。。使用平面网格时

R ggplot2使用..计数。。使用平面网格时,r,plot,ggplot2,R,Plot,Ggplot2,我在Ubuntu中使用R studio,标准更新了R和ggplot2 我尝试在ggplot中创建一个直方图,并按组分隔数据 我需要绘图的y轴来表示被刻面网格分割的子组中每个箱子的频率 例如,如果数据中有两个条目 a group 1 1 2 2 我需要使用facet_网格按组分割,然后显示a有一个1的条,这是组1中100%的示例,反之亦然 我发现这样做的方法是使用(…计数…)/sum(…计数) 但是sum(…count…)将计算整个数据帧中的频率,并将给我不想要的结果 我找不到深入使用..cou

我在Ubuntu中使用R studio,标准更新了R和ggplot2

我尝试在ggplot中创建一个直方图,并按组分隔数据

我需要绘图的y轴来表示被刻面网格分割的子组中每个箱子的频率

例如,如果数据中有两个条目

a group
1 1
2 2
我需要使用facet_网格按组分割,然后显示a有一个1的条,这是组1中100%的示例,反之亦然

我发现这样做的方法是使用(…计数…)/sum(…计数) 但是sum(…count…)将计算整个数据帧中的频率,并将给我不想要的结果

我找不到深入使用..count..的好文档

文档中没有非常全面的内容

这是我正在使用的示例代码

df <- data.frame(a = 1:10, b = 1:10, group = c(rep(1,5),rep(2,5)))
p<-ggplot(df) + geom_histogram(aes(x = a, y = (..count..)/sum(..count..))) +  
   facet_grid(group ~ .)
df您可以尝试:

首先使用
ave
计算每组的长度:

df$gr_l <- ave(df$a, df$group, FUN = function(x) length(x))
绘制数据

ggplot(df, aes(x=a, y=gr_prop)) + 
      geom_bar(stat="identity",position='dodge') + 
      facet_grid(group ~ .)
这个问题类似于
使用
ddply
或内部
ggplot
解决方案提问

这是一个dplyr解决方案

df%>% group_by(group)%>%mutate(n = n(), prop = n/sum(n))

经过一番周旋,你们都给出了很好的方向, 我发现,在Jimbou和Shayaa的答案之间加上一点,再加上一些代码,效果会很好

t <- data %>% group_by(group,member,v_rate) %>% tally %>% mutate(f = n/sum(n))
t%group\u by(组、成员、v\u比率)%>%tally%>%变异(f=n/sum(n))
将获取数据,并按组、成员、v_比率分组,并将每个组的计数除以总和(组中的相对频率)

我们想用ggplot2创建直方图,并将这些值用作直方图的权重函数,否则这一切都是徒劳的

 p <- ggplot(t, aes(x = v_rate, weight = f)) + geom_histogram() + facet_grid(group ~ member)

p试试
。密度..
?这将给出局部质量与局部计数,以及当前写入的整体全方位计数

您可以使用吗?ggplot(df,aes(x=a))+geom_histogram()+facet_grid(group~)它产生相同的结果,这里的问题是y轴上的比例以及..计数的方式。。统计数据的不同部分@JimbouWhy当每个变量都在同一个组中时,你需要组成员的比例吗?我不需要组成员的比例,我需要分布的比例,请注意代码@shayaa@captainshai它不是我的。请看我的答案。这个问题不是重复的,你的答案是指离散数据,它不适用于连续数据。。。我知道我可以绕过这个问题,拆分数据,然后求和和和重新组合,但主要的想法是理解…计数的方式。。工作,因为没有合适的文档来描述这种情况,所以这是一个重要的独立问题。我想你应该使用..密度。。在这种情况下,@shayaa,同样的问题,它将检查密度与所有数据的关系,我需要它来计算由刻面分隔的组内的密度grid@jimbou-此外,当使用连续数据时,如果选择此解决方案,unique将扭曲值,我觉得使用unique是有问题的。@captainshai因为组长度
gr_l
只在
df$group
向量上计算,所以
df$group+df$a
的每个交互对每个组元素都有相同的值。因此,
unique
没有问题。我会使用
.bincode
独立于
ggplot
进行binning。这看起来很有希望,你能提供更多细节吗?如果你想学习dplyr,有一个很好的小插曲。基本上,
%%>%%
是一个管道操作符,可以解释为“然后”。首先按组对数据帧进行分组,然后添加一列计算组内发生的次数,然后计算另一列,该列计算组内发生的次数,并通过除以总数计算比例。请提供更详细的答案,以便我能够接受它作为答案。。。但在之前,这对于处理离散变量非常有用,但是,同样,这如何帮助我们绘制ggplot,并为镶嵌面网格生成的子组中每个箱子的相对频率生成y轴?在这种情况下,mutate可以接受多个参数,这是我将添加到原始矩阵中的多个列。第一个计算特定组出现的次数,将其附加到df并调用变量n。然后取这个数,在整个组中求和,然后将这两个数相除。它调用这个值prop,并将其附加到矩阵中。最后,我们需要能够说,例如,数字1.0-2.0是第1组的30%,等等。
 p <- ggplot(t, aes(x = v_rate, weight = f)) + geom_histogram() + facet_grid(group ~ member)