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