2017-04-05 4 views
0

으로 평균 값을 플롯하는 방법 :나는이에 비슷한 찾고 dataframe의 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 = 평균 (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)