【问题标题】:R geom_bar with each bar the mean value of subsets of a columnR geom_bar 与每个条柱的子集的平均值
【发布时间】:2020-08-15 04:11:47
【问题描述】:

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

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 个条形?

【问题讨论】:

    标签: r ggplot2 bar-chart geom-bar


    【解决方案1】:

    您可以每 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()
    

    【讨论】:

    • 感谢 Ronak,但如果我有一个包含多列的数据框并且上面是其中之一,那么这个解决方案对我不起作用。 (考虑我不是用数据创建列,数据已经存在。)你能解释一下吗?
    • 我不确定你的意思。您可以更新您的示例以具有多个列吗?是否要占用多个列的mean
    • 我想我明白了。谢谢!
    • @sam 我不知道哪个有经验的用户告诉你最好删除重复的问题。但是如果问题是重复的,则不应删除它们。它们应该作为副本关闭。请参阅此元帖子以供参考meta.stackoverflow.com/questions/265736/…
    【解决方案2】:

    base R 中,我们可以使用barplot 做到这一点

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

    -输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多