【问题标题】:How to plot mean values with standard deviation如何用标准差绘制平均值
【发布时间】:2017-08-30 17:24:52
【问题描述】:

我有一个与此类似的数据框 D:

 Temp      A      B
  14      10      14
  14      11      13
  14      12      15
  14      14      18
  16      18      17
  16      20      17
  16      22      18
  16      22      17
  18      25      25
  18      26      27
  18      28      26
  18      26      28

每个温度步长总是有相同数量的值。

我想要做的:绘制每个温度步骤的 A 和 B 的平均值和标准偏差。是否可以在不细分数据框的情况下这样做? 非常感谢!

【问题讨论】:

  • 你尝试过什么吗?
  • 这为您提供了 A 和 B 每个温度的平均值/标准差:aggregate(.~Temp,df,function(x) c(M=mean(x),SD=sd(x))),不确定您要绘制什么或如何绘制

标签: r dataframe plot mean standard-deviation


【解决方案1】:

GGplot 倾向于希望您的长格式数据已经处于所需的聚合级别。所以我会先将它融化,使您的值在一列中,然后使用 data.table 的语法创建一个包含您的平均值和标准偏差的汇总数据集,然后融合该摘要,然后分别绘制平均温度和标准偏差。

 meltedTable = melt(table, id.vars = c("temp"))
 summaryTemps = meltedTable[,list(Mean = mean(value), StandardDeviation =   sd(value)), by = list(temp, variable)]
 meanTemperatures = ggplot(summaryTemps) + geom_line(aes(x = summaryTemps$temp, y = summaryTemps$Mean, colour = summaryTemps$variable))
 sdTemperatures = ggplot(summaryTemps) + geom_line(aes(x = summaryTemps$temp, y = summaryTemps$StandardDeviation, colour = summaryTemps$variable))

【讨论】:

    【解决方案2】:

    您也可以找到其他方法, 试试下面的代码:

    df<-split(df,df$Temp)
    
    df<-lapply(df,function(x){
         A.mean<-mean(x[,1])
         A.sd<-sd(x[,1])
         B.mean<-mean(x[,2])
         B.sd<-sd(x[,2])
         x<-rbind(A.mean,A.sd,B.mean,B.sd)
         x
    }
    )
    
    df<-do.call("rbind",df)
    
    df<-as.data.frame(df)
    df$Variable<-rownames(df)
    
    df$Count<-rep(1:(nrow(df))/4,each=4)
    rownames(df)<-NULL
    
    ggplot(df,aes(Count,V1))+geom_line+facet_wrap(~Variable,scales="free",ncol=2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2014-08-28
      • 2018-02-25
      • 2020-12-26
      • 1970-01-01
      相关资源
      最近更新 更多