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")