R - 将数据聚合到数据帧中

时间:2016-01-05 14:07:41

标签: r dataframe

我最近正在使用一些输出,我似乎无法用信息绘制它。输出如下所示:

180,A,71
180,C,61
180,G,68
180,U,78
182,A,70
182,C,34
182,G,123
182,U,51

我想绘制这些数据,因此我在x轴上绘制第一列,并在y轴上绘制根据四种不同类型(第2列)及其频率(第3列)填充的条形图。因此,y轴上的所有类型的频率都是第一列的一个值,但该条形将根据类型的大小进行划分。

我希望问题很明确,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这是怎么回事?

df <- data.frame(X=rep(c(180,182), each=4), Group=rep(c("A","C","G","U"),2),
             Y=c(71,61,68,78,70,34,123,51))

# Calculating percentages (just using base)
groupSum <- tapply(df$X, df$Group, sum)
df$Label <- paste0(round(100 * df$Y / groupSum[df$Group], 1), "%")

# Go for the plot
library(ggplot2)

ggplot(data=df, aes(x=X, y=Y,fill=Group)) + 
    geom_bar(position="dodge", stat="identity") + 
    scale_x_continuous(breaks=unique(df$X))

最后一部分仅标记实际使用的x值。 enter image description here

这就是@Haroka的情节(现在根据请求添加了百分比 - 也是see here):

ggplot(data=df, aes(x=X, y=Y,fill=Group)) +
  geom_bar(position="stack", stat="identity") +
  scale_x_continuous(breaks=unique(df$X)) +
  geom_text(aes(label = Label), size=12, hjust=0.5, vjust=3, position="stack")

enter image description here