将仅出现一次的值分组到 OTHER 字段中

Group values that occur only once into an OTHER field

我有一组罗马硬币,我试图在 R 中使用 ggplot 来表示。

数据中有 25 种不同的面额,但我想将所有只出现一次的面额合并到一个 'OTHER' 字段中,以便图表更易于阅读。

  Medium Method Denom            Date                  Era
1 Silver Struck Denarius         112 B.C.E.:111 B.C.E. Period V – c. 119-91 B.C.E.
2 Bronze   Cast Χαλκα μεγεθους   181 B.C.E.:174 B.C.E. Period III – c. 187-155 B.C.E.
3 Bronze Struck Litra:Half-litra            269 B.C.E. Period I – 269 - c. 222 B.C.E.
4 Bronze Struck Litra:Half-litra            269 B.C.E. Period I – 269 - c. 222 B.C.E.
5 Silver Struck Didrachm         275 B.C.E.:270 B.C.E. Period I – 269 - c. 222 B.C.E.
6 Bronze Struck Double-litra     275 B.C.E.:270 B.C.E. Period I – 269 - c. 222 B.C.E.

使用上面的 data.frame 示例,"Denom" 列需要将只出现一次的每个值组合在一起并显示为 "other." 我想我应该在开始绘图之前的数据。请指出正确的方向。

如果有帮助,这是我用于 ggplot 的代码。

ggplot(data=longbadian, aes(x=Era, fill=Denom)) 
+    geom_bar(aes(x=Era2), data = longbadian, stat="bin") 
+ theme(axis.text.x =  element_text(angle=75, hjust=1), 
                       legend.title=element_blank()) 
+ xlab("Sydenham Periods") 
+ ylab("Coins by Denomination")

这是一个示例图:

像这样:

## example data
dd <- data.frame(DENOM=rep(LETTERS[1:7],c(10,5,4,rep(1,4))))
tt <- table(dd$DENOM)                  ## count occurrences
singletons <- names(tt)[tt==1]         ## find singletons
tmpc <- as.character(dd$DENOM)         ## convert from factor to char
tmpc[tmpc %in% singletons] <- "OTHER"  ## replace values
dd$DENOM <- factor(tmpc)               ## convert back to factor

这个解决方案的唯一问题是它会弄乱任何 DENOM 因素中预先存在的非默认排序。