如何用标准偏差绘制平均值

时间:2017-04-05 08:07:07

标签: r dataframe plot mean standard-deviation

我的数据框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的平均值和标准偏差。是否可以在不细分数据框的情况下这样做? 非常感谢!

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:0)

你也可以找到其他方法, 尝试以下代码:

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)