簡體   English   中英

如何用標准差繪制平均值

[英]How to plot mean values with 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的平均值和標准偏差。 是否可以在不細分數據幀的情況下這樣做? 非常感謝!

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))

您還可以找到其他方法,請嘗試以下代碼:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM