2015-01-11 2 views
0

Я надеюсь, что кто-то может помочь найти дробовик для создания барплота с барами ошибок. В целом мне нравится этаПростой способ построения диаграммы с помощью SE

# some dummy data 
q <- setNames(data.frame(matrix(sample(100,400,T), nrow=20)), 
c("A","B","C","D","E","F","G","H","I","G","K","L","M","O","P","Q","R","S","T","U")) 

#I usually melt the data 
library(reshape2) 
a1 <- melt(q) 

# summarize them 
library(plyr) 
a2 <- ddply(a1, c("variable"), summarise, mvalue = mean(value, na.rm=TRUE), 
              medvalue = median(value, na.rm=TRUE), 
              sd = sd(value, na.rm=TRUE),  
              n = sum(!is.na(value)),se = sd/sqrt(n)) 

#However, I got an error in generating se: 
#Error in sd/sqrt(n) : non-numeric argument to binary operator 

# then I plot the graph 
library(ggplot2) 
ggplot(sum1, aes(x=variable, y=mvalue, fill=variable))+ 
geom_bar(stat='identity', position='dodge')+ 
geom_errorbar(aes(ymin=mvalue-sd,ymax=mvalue+sd))+ 
scale_fill_grey() 
# here i used the sd instead of se 

Почему я получил ошибку на se? Есть ли способ сохранить все эти шаги, чтобы создать барьеры с ошибками более разумным способом?

+1

Я никогда не использовал 'plyr' раньше, но то, что случилось с просто используйте' aggregate' из базы R? Следующее, похоже, работает 'aggregate (value ~ variable, a1, function (x) c (mean = mean (x, na.rm = TRUE), medvalue = median (x, na.rm = TRUE), sd = sd (x, na.rm = TRUE), se = sd (x, na.rm = TRUE)/sqrt (sum (! is.na (x))))) ' –

+0

спасибо, david, не могли бы вы показать, как для построения данных с помощью ggplot? – Samehmagd

+0

Ваш код не работает сгенерированный 'se'? –

ответ

1

ddply почти полностью несуществующей в тени dplyr

library(dplyr) 
a1$variable <- as.character(a1$variable) 
a1 %>% 
    group_by(variable) %>% 
    summarise(mvalue = mean(value, na.rm=TRUE), 
      medvalue = median(value, na.rm=TRUE), 
      sd = sd(value, na.rm=TRUE),  
      n = sum(!is.na(value)), se = sd/sqrt(n)) %>% 
    ggplot(., aes(x=variable, y=mvalue, fill=variable)) + 
    geom_bar(stat='identity', position='dodge')+ 
    geom_errorbar(aes(ymin=mvalue-se, ymax=mvalue+se))+ 
    scale_fill_grey() 
+0

нашел способ добавить столбца SE вручную, используя q3 <-cbind (se = q2 $ sd/sqrt (q2 $ n), q2). все еще ищут более простой способ построения графика ,, – Samehmagd

+0

На удивление, переустановка R и Rstudio решила проблему! – Samehmagd

Смежные вопросы