2017-04-05 115 views
0

绘制平均值有一个数据帧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

你尝试过什么吗? – mtoto

+0

这给出了每个温度A和B的平均值/ sd:'aggregate(。〜Temp,df,function(x)c(M = mean(x),SD = sd(x)))',你想阴谋或如何 – timfaber

回答

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