我将使用ggplot2包标配的钻石数据集来说明我正在寻找的东西。
我想构建一个如下图:
library(ggplot2)
ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
但是,我想要返回连续变量的平均值而不是计数。我想返回切割和颜色,得到平均克拉。如果我输入此代码:
ggplot(diamonds, aes(carat, fill=cut)) + geom_bar(position="dodge")
我的输出是克拉数与切割次数的计数。
任何人都知道怎么做?
答案 0 :(得分:1)
您可以获得mean(carat)
按cut
和color
分组的新数据框,然后绘制:
library(plyr)
data <- ddply(diamonds, .(cut, color), summarise, mean_carat = mean(carat))
ggplot(data, aes(color, mean_carat,fill=cut))+geom_bar(stat="identity", position="dodge")
如果您想要更快的解决方案,可以使用dplyr
或data.table
使用dplyr
:
library(dplyr)
data <- group_by(diamonds, cut, color)%.%summarise(mean_carat=mean(carat))
使用data.table
:
library(data.table)
data <- data.table(diamonds)[,list(mean_carat=mean(carat)), by=c('cut', 'color')]
两者的情节代码相同。