gpt4 book ai didi

r - 将平均值添加到构面

转载 作者:行者123 更新时间:2023-12-02 15:03:00 26 4
gpt4 key购买 nike

我有这个图,它计算给定冬季鸟类物种的丰富度指数: Facet by year该图形来自此代码(不包括主题和比例):

ggplot (a, aes (pentada,ika,colour=inv,group=inv,na.rm=T)) + geom_line()+
facet_wrap(~inv, ncol=3)+labs(title="SYLATR\n",x="",y="IKA")

数据框有 6 个变量:

pentada/censos/年/总计/inv/ika

问题是,我想在每个冬季添加一行,显示所有年份的丰度平均值,但我不知道如何操作。我应该在每个冬季之后将平均值作为新列附加吗?这种情况我该怎么办?

谢谢。

最佳答案

我不确定您是否想要全局平均值,即冬季和几天的平均值。如果是这样,那么上面的 Shadow 解决方案可能是最好的;像这样的事情也可以:

#toy data
df <- data.frame(t = rep(1:100,9), pop = rnorm(900)+20,
year = rep(letters[1:9], 9, each = 100))

#make graph
ggplot(data = df, aes(x = t, y = pop, colour = year, na.rm=T)) +
geom_line() + facet_wrap(~year, ncol = 3) +
geom_line(aes(x=t, y = mean(pop)))

如果您想要仅冬季平均值,以便白天仍然存在动态,我认为您应该在调用 ggplot 之前先将其添加到数据框中。

#aggregate the mean population over years but not days
yearagg.df <- aggregate(data = df, pop ~ t, mean)

#make plot
ggplot(data = df, aes(x = t, y = pop, colour = year, na.rm=T)) +
geom_line() +
facet_wrap(~year, ncol = 3) +
geom_line(data = yearagg.df, aes(y = pop, x=t), color = 'black')

第二个代码片段生成此图表:

Graph of 2nd code snippet with mean-over-years-only

更新:如果将平均数据放回数据框中,您可能会更容易绘制,这样您就可以从同一数据框中绘制所有图层,而不是将多个帧的数据混合/匹配到一个图中。

df.m <- merge(df, yearagg.df, by = 't', suffixes = c('.raw', '.mean'))
ggplot(data = df.m, aes(x = t, colour = year, na.rm=T)) +
geom_line(aes(y = pop.raw)) +
facet_wrap(~year, ncol = 3) +
geom_line(aes(y = pop.mean), color = 'gray')

关于r - 将平均值添加到构面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com