总结R中的数据

时间:2015-03-15 11:18:18

标签: r matrix summarization

我是R的新手,我在汇总数据时遇到了麻烦。我试图在互联网上关注教程,但不幸的是我一直都有错误。

我有一个矩阵,我的响应因子是"浓度"

在我的实验中,我有3次治疗(a,b和c),每次治疗重复5次。我得到了8种产品(PRO1 - PRO8)的浓度。

     TRA PRO1 PRO2 PRO3 PRO4 PRO5 PRO6 PRO7 PRO8
1    a   83   85   59   46   64    8   76   74
2    a   61   71   73   15   87   95   61    9
3    a   78   12   35   23   56   95   67   11
4    a   48   30   75   94   57   15   58   58
5    a   51   92   30   60   22    9   64    5
6    b   46   17   66   79   30   99    3   38
7    b   40   25   11   18   66   25   55   38
8    b   34   94   83   63   30  100   56   31
9    b    3   81   26   73   32   56    4   12
10   b   18   40   13   51    4   44   75    4
11   c   68   28   20   15   13   56    5   82
12   c   50   85   65   85   13   13   34   69
13   c   75   37   11   55   58   69   85   67
14   c   71   30   83   46   87   67   59   70
15   c   10   76   50   20   98   81   57   76

我尝试了summaryBy,doBy和这些函数,但它对我不起作用。

如何对矩阵进行排序以执行这些函数并得到均值,sd?我的目的是制作一个带有误差条的条形图,以查看每种产品的处理方法之间的差异。

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试

library(ggplot2)
library(dplyr)
library(tidyr)

gather(df1, Var, Val, -TRA) %>% 
              group_by(TRA, Var) %>% 
              summarise(Mean=mean(Val), SD=sd(Val)) %>% 
              ggplot(., aes(x=TRA, y=Mean, fill=Var))+
              geom_bar(position=position_dodge(), stat='identity')+
              geom_errorbar(aes(ymin=Mean-SD, ymax=Mean+SD), width=.2, 
                          position=position_dodge(.9))

数据

df1 <- structure(list(TRA = c("a", "a", "a", "a", "a", "b", "b", "b", 
"b", "b", "c", "c", "c", "c", "c"), PRO1 = c(83L, 61L, 78L, 48L, 
51L, 46L, 40L, 34L, 3L, 18L, 68L, 50L, 75L, 71L, 10L), PRO2 = c(85L, 
71L, 12L, 30L, 92L, 17L, 25L, 94L, 81L, 40L, 28L, 85L, 37L, 30L, 
76L), PRO3 = c(59L, 73L, 35L, 75L, 30L, 66L, 11L, 83L, 26L, 13L, 
20L, 65L, 11L, 83L, 50L), PRO4 = c(46L, 15L, 23L, 94L, 60L, 79L, 
18L, 63L, 73L, 51L, 15L, 85L, 55L, 46L, 20L), PRO5 = c(64L, 87L, 
56L, 57L, 22L, 30L, 66L, 30L, 32L, 4L, 13L, 13L, 58L, 87L, 98L
), PRO6 = c(8L, 95L, 95L, 15L, 9L, 99L, 25L, 100L, 56L, 44L, 
56L, 13L, 69L, 67L, 81L), PRO7 = c(76L, 61L, 67L, 58L, 64L, 3L, 
55L, 56L, 4L, 75L, 5L, 34L, 85L, 59L, 57L), PRO8 = c(74L, 9L, 
11L, 58L, 5L, 38L, 38L, 31L, 12L, 4L, 82L, 69L, 67L, 70L, 76L
)), .Names = c("TRA", "PRO1", "PRO2", "PRO3", "PRO4", "PRO5", 
"PRO6", "PRO7", "PRO8"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"))