首页 > 解决方案 > 绘制两个不同数据框中变量的平均值并将其绘制在同一张图中

问题描述

我目前有两个数据框:dataframe5 和 dataframe 6。

我在一个图中为两个数据框创建了一个时间图(总计与年份),我需要找到这两条线的平均值并将其绘制在同一个图中。时间图

到目前为止,我的尝试还没有奏效

library(ggplot2)
df <- merge(dataframe5, dataframe6, by = 'Total')

ggplot(df) +
  geom_line(aes(Year.x, Total), color = '#0087E9', size = 5) +
  theme_minimal() +
  theme(axis.text = element_text(color = 'black', size = 16),
        axis.line = element_line(color = 'black'))

注意:两个数据框都包含 88 个观察值

标签: rggplot2

解决方案


这是一个通用答案,可以扩展到您拥有的尽可能多的数据帧:

library(dplyr)
df_list = list(df5 = df5, df6 = df6)
library(dplyr)
big_df = bind_rows(df_list, .id = "source")
big_df = big_df %>% group_by(Year) %>% summarize_if(is.numeric, mean) %>%
  mutate(source = "Mean") %>%
  bind_rows(big_df)

ggplot(big_df, aes(x = Year, y = Total, color = source)) +
  geom_line()

在此处输入图像描述

更恰当地命名list将有助于情节标签。如果您确实有更多数据框,我强烈建议您阅读我在如何制作数据框列表中的答案。

使用这些数据:

df5 = read.table(text = "Year     VegC    LittC   SoilfC   SoilsC    Total
1 2013 1.820858 1.704079 4.544182 1.964507 10.03363
2 2014 1.813573 1.722106 4.548287 1.964658 10.04863
3 2015 1.776853 1.722110 4.553425 1.964817 10.01722
4 2016 1.794462 1.691728 4.556691 1.964973 10.00785
5 2017 1.808207 1.708956 4.557116 1.965063 10.03936
6 2018 1.831758 1.728973 4.559844 1.965192 10.08578",
header = T)

df6 = read.table(text =
" Year     VegC    LittC   SoilfC   SoilsC    Total
1 2013 1.832084 1.736137 4.542052 1.964454 10.07474
2 2014 1.806351 1.741353 4.548349 1.964633 10.06069
3 2015 1.825316 1.729084 4.552433 1.964792 10.07164
4 2016 1.845673 1.735861 4.553766 1.964900 10.10020
5 2017 1.810343 1.754477 4.556542 1.965033 10.08640
6 2018 1.814503 1.728337 4.561960 1.965191 10.07001",
header = T)

推荐阅读