2017-03-06 7 views
0

私は複数の行をプロットし、それぞれの点についてエラーバーを表示したいと思います。私は、私の質問は、最高のYMAXに標準エラーを示すggplotとdplyr

は、現在のデータフレームが、私は2つの新しい列を作成する必要があり、この

data1 <- data.frame(
    group=c("A","A","A","A","B","B","B","B"), 
    x= c(1,2,3,4,5,6,7,8), 
    y = c(1,2,3,4,5,6,7,8), 
    z= c(10,20,30,40,50,60,70,80))  # sample data matrix 

data2 = as.data.frame (data1 %>% group_by(group ) %>% 
    summarise(
    MU_Y= mean(y), 
    upper_limit_Y =MU_Y+(1.96*sd(y, na.rm = TRUE)/sqrt(sum(!is.na(y)))), 
    lower_limit_Y = MU_Y-(1.96*sd(y, na.rm = TRUE)/sqrt(sum(!is.na(y)))), 
    MU_Z= mean(z), 
    upper_limit_Z =MU_Z+(1.96*sd(z, na.rm = TRUE)/sqrt(sum(!is.na(z)))), 
    lower_limit_Z = MU_Z-(1.96*sd(z, na.rm = TRUE)/sqrt(sum(!is.na(z)))) 
) %>% 
    gather(key =Metric, value = Value , 
     #c(MU_Y,lower_limit_Y,upper_limit_Y,MU_Z, upper_limit_Z,lower_limit_Z)) 
      c(MU_Y,MU_Z)) 
) 


    group upper_limit_Y lower_limit_Y upper_limit_Z lower_limit_Z Metric Value 
1  A  3.765175  1.234825  37.65175  12.34825 MU_Y 2.5 
2  B  7.765175  5.234825  77.65175  52.34825 MU_Y 6.5 
3  A  3.765175  1.234825  37.65175  12.34825 MU_Z 25.0 
4  B  7.765175  5.234825  77.65175  52.34825 MU_Z 65.0 

ggplot(data2, aes(x = group, y= Value, group = Metric))+ 
    geom_line()+ 
    geom_point() 

のように見えるYMIN列を作成する方法である

geom_errorbar(aes(ymax=ymax, ymin=ymin), width=0.25) + xlab('points') 

使用する必要があります適切な上限/下限であるデータフレームyminおよびymax。その後、私は、各ポイントのラインとエラーバーをプロットすることができるだろう

ymin ymax 
    1.23.. 3.76.. 
    5.23.. 7.76.. 
    12.34.. 37.65.. 
    52... 77.65... 

:追加された新しい列は、この(私はすべての小数点以下をコピーしていませんでし)のようになります。

ggplot(data2, aes(x = group, y= Value, group = Metric))+ 
    geom_line()+ 
    geom_point() + 
    geom_errorbar(aes(ymax=ymax, ymin=ymin), width=0.25) + 
    xlab('points') 
+0

dplyチェーンをas.data.frameでラップするのはなぜですか? as.data.frameを実際に使用する必要がある場合は、チェーンの最後に追加してください。 '%>%as.data.frame()' –

+0

ありがとう!質問の考え? – user3022875

+0

ギャザーを疑うと、それよりも多くの問題が発生しています –

答えて

1

あなたはgatherが間違った場所にあると思います。

data2 <- data1 %>% 
    gather(key = Metric, value = Value, -group, -x) %>% 
    group_by(group, Metric) %>% 
    summarise(
    MU = mean(Value), 
    SD = sd(Value, na.rm = TRUE), 
    N = sum(!is.na(Value)), 
    upper_limit = MU + SD/sqrt(N), 
    lower_limit = MU - SD/sqrt(N) 
) 


ggplot(data2, aes(x = group, y= MU, group = Metric))+ 
    geom_line()+ 
    geom_point() + 
    geom_errorbar(aes(ymax=upper_limit, ymin=lower_limit), width=0.25) + 
    xlab('points') 

これは適切ですか?

関連する問題