问题描述
如果我有一列带有数值的列,并且想创建一个条形图,其中每个条形均作为该列子集的平均值,那该怎么办?
例如,
x1 <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
x1_df <- data.frame(x1)
x_set1 <- mean(x1_df$x1[1:5])
x_set2 <- mean(x1_df$x1[6:10])
x_set3 <- mean(x1_df$x1[11:15])
x_set4 <- mean(x1_df$x1[16:20])
如何创建4个具有平均值高度的条形图?
解决方法
您可以每5个值中的mean
进行绘制。
library(dplyr)
library(ggplot2)
x1_df %>%
group_by(grp = ceiling(row_number()/5)) %>%
summarise(mean = mean(x1)) %>%
ggplot() + aes(grp,mean) + geom_col()
,
在base R
中,我们可以使用barplot
barplot(with(x1_df,tapply(x1,as.integer(gl(length(x1),5,length(x1))),FUN = mean)))
-输出