通过包含年份的变量中的固定数字分组

时间:2019-04-08 08:10:51

标签: r ggplot2 dplyr

我必须归纳一些汇总的数据,其中第一列包含年份信息。我正在尝试这样做,但出现错误。

示例数据为:

mydata = data.frame(Year = c(2001:2018), Dat = c(1:18))

我想表示“日期”的合计平均值,但按“年份”分组,分为4组(即2001、2002、2003和2004 =组1,依此类推)。

我正在尝试:

ggplot(mydata, aes(x=group_by((n=n(Year)/4)), y=Dat)) + stat_summary(fun.y="mean", geom="bar")

但是这引发了我无法理解的错误。

  

n(年份)中的错误:未使用的参数(年份)

我做错了什么?还是有替代方法?

2 个答案:

答案 0 :(得分:1)

使用dplyr,您可以尝试:

mydata %>%
 group_by(group = gl(ceiling(n() / 4), 4, length = n())) %>%
 summarise(Dat = mean(Dat))

  group   Dat
  <fct> <dbl>
1 1       2.5
2 2       6.5
3 3      10.5
4 4      14.5
5 5      17.5

只是分组:

mydata %>%
 group_by(group = gl(ceiling(n() / 4), 4, length = n())) 

    Year   Dat group
   <int> <int> <fct>
 1  2001     1 1    
 2  2002     2 1    
 3  2003     3 1    
 4  2004     4 1    
 5  2005     5 2    
 6  2006     6 2    
 7  2007     7 2    
 8  2008     8 2    
 9  2009     9 3    
10  2010    10 3    
11  2011    11 3    
12  2012    12 3    
13  2013    13 4    
14  2014    14 4    
15  2015    15 4    
16  2016    16 4    
17  2017    17 5    
18  2018    18 5

并获取图形(借鉴@Ronak Shah的绘图思想):

mydata %>%
 group_by(group = gl(ceiling(n() / 4), 4, length = n())) %>%
 summarise(Dat = mean(Dat)) %>%
 ggplot(aes(group, Dat)) + 
 geom_bar(stat = "identity")

答案 1 :(得分:1)

我会保持数据的重塑和明确显示

library(dplyr)
library(ggplot2)

mydata %>%
   group_by(group = ceiling((1:nrow(mydata)/ 4))) %>%
   summarise(mean = mean(Dat)) %>%
   ggplot() + 
   aes(group, mean) + 
   geom_bar(stat = "identity")

enter image description here


但是,您可以使用stat_summary

ggplot(mydata) + 
     aes(x = ceiling((1:nrow(mydata))/ 4), y = Dat) + 
     stat_summary(fun.y = "mean",geom = "bar")