R geom_栏仅显示感兴趣的特定堆栈
我想用我的数据做一个条形图。 我的数据如下所示:R geom_栏仅显示感兴趣的特定堆栈,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我想用我的数据做一个条形图。 我的数据如下所示: df <- data.frame("sampleID" = c(1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), "Type" = c("A","B","E","A","B","C","D","A&quo
df <- data.frame("sampleID" = c(1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
"Type" = c("A","B","E","A","B","C","D","A","C","D","F","B","C","E","F"),
"Frequency" = c(10,2,1,5,7,1,6,8,4,3,1,6,5,2,6))
这给了我一个情节:
现在,我试图找出如何在每个示例ID
条中只保留最常用的类型
s和类型E
堆栈,并将其余的列为其他s
(例如,对于sampleID==1
,A
和B
是两种最常见的类型
s,而E
是剩余的一种,因此所有三个堆栈都将显示在我的最终绘图中。但是对于sampleID==2
,B
和D
是两种最常见的类型
,没有E
,因此B
和D
堆栈将显示在我的最终绘图中,而A
和C
将转换为Other
。或者对于sampleID==4
,B
,E
和F
堆栈将保留在我的最终绘图中,而C
将转换为Othere> )
我还发现了使用切片
保持最高频率的其他示例,但我不知道如何将其应用于每个样本ID
,而不是整个df
,我也找不到任何显式强制几何图形条
显示特定堆栈的示例。有人能提供任何建议吗?如果你愿意的话定义这个小助手函数:
top2\u或\e这是一个非常简洁的解决方案!我刚刚发现我的实际数据集还有一个问题,我没有在测试数据集中重现。R是按字母顺序排序的类型
,在本例中,其他
堆栈恰好是按字母顺序排序的最后一个堆栈(例如,在sampleID==2
中,other
是C
和D
,因此它们在A
和B
下面堆叠在一起).但在我的实际数据中,灰色堆栈分散在各个条中,因为字母顺序混乱。是否有办法安排数据,以便始终在底部绘制除top2
或e
之外的任何内容?
ggplot(data=df, aes(x=sampleID, y=Frequency, fill=Type)) +
geom_bar(stat="identity")