将过滤(例如grep)与绘图功能结合起来?

时间:2015-11-25 19:35:04

标签: r plot grep filtering

刚开始使用R而我无法找到任何示例来回答我的问题!

我已经整理了一个看起来像这样的数据集:

Sample.Name    Component.name  TCAmount  Ratio
1A-S0          Alprazolam         0.0      0.05
1A-S1          Alprazolam         1.5      0.07
1A-S2          Alprazolam         3.1      0.08
1A-S3          Alprazolam         6.25     0.10
2A-S0          Alprazolam         0.0      0.06
2A-S1          Alprazolam         1.5      0.08
2A-S2          Alprazolam         3.1      0.09
2A-S3          Alprazolam         6.25     0.10
1B-S0          Alprazolam         0.0      0.05
1B-S1          Alprazolam         1.5      0.08
1B-S2          Alprazolam         3.1      0.10
1B-S3          Alprazolam         6.25     0.11`

我现在正在寻找一种方法来选择包含" 1A"的所有行。在Sample.Name列中(因此包括1A-S0,1A-S1,1A-S2,1A-S3)然后让R绘制RatioTCAmount仅包含此行的行串。例如。我遇到过grep,它能够选择包含术语" 1A"的行:

> df1<-grep(("1A"), alprazolam.df$Sample.Name, value=TRUE)
> df1

我回来了:

 [1] "1A-S0" "1A-S1" "1A-S2" "1A-S3"

我的问题是:如何命令R现在只为这些列Ratio选择TCAmountgrep?我宁愿不创建此数据的子集,然后必须创建指向的特定命令,因为这已经是较大数据集的子集。如果我开始创建更多的子集,我将最终得到50个这样的数据集乘以这个子集的数量...... AH!

如果可能,我最终希望能够创建一个循环,其中R知道使用Sample.Name级别(在本例中为1A,2A,1B)创建三个图表,自动显示Ratio对比TCAmounts

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

这是一个使用ggplot2包进行绘图的解决方案。它还将为您的数据中的每个Sample.Name级别创建一个图表(我假设Sample.Name级别是Sample.Name中的前两个字符)。 ggplot2可以使用数据框中的列自动拆分组中的数据并创建多个图。

我首先在数据框中添加一列Sample.Name.Level,如下所示:

alprazolam.df$Sample.Name.Level <- substr(alprazolam.df$Sample.Name, 1, 2)

然后该图由

创建
library(ggplot2)
ggplot(alprazolam.df, aes(x = TCAmount, Ratio)) +
    facet_wrap(~ Sample.Name.Level) + geom_line()

给出了

enter image description here