2014-02-25 2 views
1

R 및 종종 많은 솔루션에서 오류 막대를 플로팅하는 것에 대한 많은 논의가있었습니다. 복제본을 사용하여 행렬 데이터를 처리하는 것이 가능한지 궁금합니다. 예를 들어매트릭스에 대한 표준 오차 플로팅 (복제 데이터 포함)

: 그룹 ("COND1"및 "Cond2") 표준에 기초하여 에러에 대한 값을 제공 할 다른 행렬을 계산하는 등

dataset <- read.table(text="Cond1.Rep1 Cond1.Rep2 Cond1.Rep3 Cond2.Rep1 Cond2.Rep2 Cond2.Rep3 
4 6 10 10 6 4 
5 7 5 10 4 5 
4 8 4 2 4 2 
6 4 8 5 3 3 
7 5 8 6 4 5 
7 5 8 8 7 5 
8 5 9 9 8 5 
4 5 4 3 8 7 
6 6 4 5 4 2 
4 6 7 7 8 3", head=TRUE) 

뭔가를해야만. 어떤 빠른 가능성, 그래서 우리는 행렬의 모든 행 (또는 심지어 모든 행)에 대한 플롯을 생성 할 수 있습니까?

감사

+0

무엇의 표준 오류? 각 조건에 대해 – PascalVKooten

+0

개의 복제본이 있습니다. – user1844052

+0

당신의 질문 '어떻게 계산 std 오류'또는 '매트릭스의 모든 행/음모를 그릴 수 있습니까? 후자의 경우,'? matplot –

답변

1

먼저 데이터를 재 형성해야

library(reshape2) 
dat <- melt(dataset) 
dat <- cbind(dat, 
      do.call(rbind, strsplit(as.character(dat$variable), ".", fixed=TRUE))) 
names(dat)[3:4] <- c("Cond", "Rep") 
dat$sample <- seq_len(nrow(dataset)) 

aggregate(value~sample+Cond, data=dat, FUN=function(x) sd(x)/sqrt(length(x))) 
# sample Cond  value 
# 1  1 Cond1 1.7638342 
# 2  2 Cond1 0.6666667 
# 3  3 Cond1 1.3333333 
# 4  4 Cond1 1.1547005 
# 5  5 Cond1 0.8819171 
# 6  6 Cond1 0.8819171 
# 7  7 Cond1 1.2018504 
# 8  8 Cond1 0.3333333 
# 9  9 Cond1 0.6666667 
# 10  10 Cond1 0.8819171 
# 11  1 Cond2 1.7638342 
# 12  2 Cond2 1.8559215 
# 13  3 Cond2 0.6666667 
# 14  4 Cond2 0.6666667 
# 15  5 Cond2 0.5773503 
# 16  6 Cond2 0.8819171 
# 17  7 Cond2 1.2018504 
# 18  8 Cond2 1.5275252 
# 19  9 Cond2 0.8819171 

library(ggplot2) 
ggplot(dat, aes(x=factor(sample), y=value, colour=Cond)) + 
    stat_summary(fun.data=mean_sdl, mult=1/sqrt(3)) 

enter image description here

+0

이것은 완벽합니다. 우리가 서로를 (플롯에서와 같이 조건을 결합하는 대신에) 바 플롯처럼 플롯 할 수 있다면 좋을 것입니다. 나는 그것을 시도 할 것입니다! – user1844052

+1

ggplot2를 사용하여이 작업을 수행하는 방법에 불과합니다. 그것은 아주 쉽습니다. – Roland