绘制数据集的均值,其中每列是不同的一天

Posted

技术标签:

【中文标题】绘制数据集的均值,其中每列是不同的一天【英文标题】:Plot means of a dataset where each column is a different day 【发布时间】:2021-11-15 17:30:47 【问题描述】:

嗨,我有这个可能是菜鸟的问题,但我已经有一段时间没有接触 R 了, 我有这个大数据集,其中每一列是一天(第 1 天、第 2 天等)的测量结果,而行是不同的处理重复。我已经设法用所有方法制作了一个表格,并将数据减少到我将处理作为行和每天的平均值在列中的位置。现在我想将这些数据绘制为散点图或线条,但我似乎没有给出用作 aes(x=) 的内容,并且有没有办法使用单个代码将它们全部绘制出来,而不是为每个添加每个 geom_point()一天和治疗。

以下是一个示例,因为数据更长且更复杂(24 天和 28 次处理,每 10 次重复总数) 我怎样才能将数据绘制成这样(Excel 图像) 提前感谢大家,任何帮助或反馈将不胜感激

#df#
treatment    day 1    day 2    day 3
1        t1 7.524814 8.330983 6.639391
2        t1 6.056334 6.138648 5.439239
3        t2 4.377818 4.964445 3.990593
4        t1 6.834753 7.070450 5.895462
5        t3 7.378768 8.375725 7.210010
6        t2 4.104087 4.942359 3.589360
7        t2 4.520651 4.775113 3.753422
8        t3 7.875438 8.543303 8.101697
9        t3 7.803648 8.232132 7.073342

mean<-aggregate(df[,2:4],list(df$treatment),mean)
sd<-aggregate(df[,2:4],list(df$treatment),sd)

#mean#
Group.1    day 1    day 2    day 3
1      t1 6.805300 7.180027 5.991364
2      t2 4.334185 4.893972 3.777792
3      t3 7.685951 8.383720 7.461683

ggplot()+geom_point(mean,aes(x=??,y=mean$"day 1")

【问题讨论】:

感谢两位的回答,但不知何故,日子好坏参半。我得到:第 1 天、第 10 天、第 11 天、第 12 天、...、第 2、第 20、第 21、第 22、第 23、第 24、第 3、第 4、第 5、第 6、...、第 9 天。有没有办法解决它? 【参考方案1】:

有几种方法可以完成任务:

    以长格式提供您的数据。 一些数据争吵 ggplot() 版本 1:
library(tidyverse)
  df %>% 
    pivot_longer(
      cols = -treatment,
      names_to = "day",
      values_to = "values"
    ) %>% 
    group_by(treatment, day) %>% 
    summarise(mean = mean(values)) %>% 
    ggplot(aes(x=day, y=mean, color=treatment, group=treatment)) + 
    geom_line()

第 2 版

library(tidyverse)
df %>% 
  pivot_longer(
    cols = -treatment,
    names_to = "day",
    values_to = "values"
  ) %>% 
  group_by(day) %>% 
  summarise(mean = mean(values)) %>% 
  ggplot(aes(x=day, y=mean, group=1)) + 
  geom_point() +
  geom_line(colour="red")

【讨论】:

感谢您的回答。版本 1 似乎是我需要的,但我将日期混合在更大的数据集中(从 1 到 24 天)。我按以下顺序获取它们:1, 10,11,12,13,...,19,2,20,21,22,23,24,3,4,5,6,..,9。有没有办法修复订单? 将天数设置为 as.factor 并在您的数据集中使用 fct_reorder【参考方案2】:

ggplot 喜欢“长”格式的数据。这是对mean 值执行此操作的一种方法,您可以对sd 执行相同操作。

library(tidyverse)

df %>%
  pivot_longer(cols = -treatment) %>%
  group_by(treatment, name = factor(name, unique(name))) %>%
  summarise(value = mean(value), .groups = 'drop') %>%
  ggplot(aes(name, value, color = treatment, group = treatment)) + geom_line()

【讨论】:

以上是关于绘制数据集的均值,其中每列是不同的一天的主要内容,如果未能解决你的问题,请参考以下文章

Pandas groupby - 我可以将它用于不同行集的不同功能吗?

在 ggplot2 中创建具有不同数据集的图例

s-s-rS 2008 使用来自同一数据集的不同总和在条形图顶部绘制折线图

r:按名称附加列子集的平均值

4:计算图像数据集的均值

4:计算图像数据集的均值