R geom_bar,每个条表示一列子集的平均值

问题描述

如果我有一列带有数值的列,并且想创建一个条形图,其中每个条形均作为该列子集的平均值,那该怎么办? 例如,

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

enter image description here

,

base R中,我们可以使用barplot

barplot(with(x1_df,tapply(x1,as.integer(gl(length(x1),5,length(x1))),FUN =  mean)))

-输出

enter image description here