我必须归纳一些汇总的数据,其中第一列包含年份信息。我正在尝试这样做,但出现错误。
示例数据为:
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(年份)中的错误:未使用的参数(年份)
我做错了什么?还是有替代方法?
答案 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")
但是,您可以使用stat_summary
ggplot(mydata) +
aes(x = ceiling((1:nrow(mydata))/ 4), y = Dat) +
stat_summary(fun.y = "mean",geom = "bar")