R - 组合因子图

时间:2015-03-17 01:15:00

标签: r graph bar-chart factors

这是一个有点奇怪的请求,我不知道函数是否一定存在,但我希望有可能存在。基本上,我有很多变量,我正在寻找结果,因此我的典型数据将如下所示

Sample   Daylength  Expt   Line    Protein

1            LD      L      K        100
2            SD      S      R        150
3            LD      L      R        200
4            SD      S      K        120
5            LD      L      K        95
6            SD      S      R        160
7            LD      L      R        195
8            SD      S      K        130

所以我有3个因变量(daylength,expt,line)和1个蛋白质结果变量。然而,我想在图中看到的是比较显示L和S实验条的蛋白质水平

我用来绘制ggplot2条形图的代码示例是:

ggplot(data=results, aes(x=daylength, y=protein, fill=line)) + geom_bar(stat="identity", position=position_dodge())

这将给我一个图表,显示LD和SD实验的结果与提供单独系列的线。但是,这并不能解释我的第三个因素expt

通常在Excel中,我可以操作表格,将LD / L,LD / S,SD / L和SD / S的结果作为单独的标题,并使用它们作为X因子创建图形,但是这样可能是艰巨的,特别是如果我要重写表,保存它并每次在R中运行它。我想看看是否有一个简单的方法来操作R中的表以使用一些命令将所有内容分组,或者将这两个因素组合起来每次直接绘制图形,特别是因为在某些情况下我可能会感兴趣结合不同的因素。

Sample   Daylength/Expt   Line    Protein

1            LD/L          K        100
2            SD/S          R        150
3            LD/L          R        200
4            SD/S          K        120
5            LD/L          K        95
6            SD/S          R        160
7            LD/L          R        195
8            SD/S          K        130

2 个答案:

答案 0 :(得分:1)

您可以在因素上使用互动运算符:

library(ggplot2)
head(CO2) # using builtin data
#  Plant   Type  Treatment conc uptake
#1   Qn1 Quebec nonchilled   95   16.0
#2   Qn1 Quebec nonchilled  175   30.4
#3   Qn1 Quebec nonchilled  250   34.8
#4   Qn1 Quebec nonchilled  350   37.2
#5   Qn1 Quebec nonchilled  500   35.3
#6   Qn1 Quebec nonchilled  675   39.2
qplot(conc, uptake, color=Type:Treatment, data=CO2)

答案 1 :(得分:0)

您可以使用粘贴:

创建Daylength / Expt列
dl_ex <- paste(results$Daylength, results$Expt, sep='/')

(如果R抱怨因素或给你奇怪的数字结果,请在列上使用as.character

然后将其添加到数据集

results2 <- results[, -c("Daylength", "Expt")]
results2$DE <- dl_ex

但是,如果您想按某些属性对数据进行分组,那么如果您熟悉SQL语法,则应该查看R&lt; plyr或sqldf。