刚开始使用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绘制Ratio
与TCAmount
仅包含此行的行串。例如。我遇到过grep,它能够选择包含术语" 1A"的行:
> df1<-grep(("1A"), alprazolam.df$Sample.Name, value=TRUE)
> df1
我回来了:
[1] "1A-S0" "1A-S1" "1A-S2" "1A-S3"
我的问题是:如何命令R现在只为这些列Ratio
选择TCAmount
和grep
?我宁愿不创建此数据的子集,然后必须创建指向的特定命令,因为这已经是较大数据集的子集。如果我开始创建更多的子集,我将最终得到50个这样的数据集乘以这个子集的数量...... AH!
如果可能,我最终希望能够创建一个循环,其中R知道使用Sample.Name级别(在本例中为1A,2A,1B)创建三个图表,自动显示Ratio
对比TCAmounts
。
感谢您提供的任何帮助!
答案 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()
给出了