2015-11-25 54 views
1

剛開始使用R和我一直沒能找到任何示例來回答我的問題!結合過濾(例如用grep)和繪圖功能?

我已經把數據集,看起來像:

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-S1,1A-S2,1A-S3),然後用R繪製Ratio與僅包含該字符串的行的​​。例如。我所遇到的grep是能夠選擇含有「1A」行:

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

我回去:

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

我的問題是:我怎麼指令R就目前積Ratio和​​只有這些列grep挑選出來?我不希望創建這些數據的子集,然後必須創建指向的特定命令,因爲這已經是較大數據集的一個子集。如果我要開始創建更多的子集,那麼我將最終得到這些數據集中的50個,這些子集的數量會被分解成...... AH!如果可能,我最終希望能夠創建一個循環,其中R知道使用Sample.Name級別(在本例中爲1A,2A,1B)創建三個圖,自動顯示RatioTCAmounts

感謝您提供的任何幫助!

+0

子集的某些行創建(通過某種邏輯條件,無論這是grep還是som的輸出e其他邏輯條件),稱爲* filtering *。 (並且某些列的子集稱爲*選擇*)。所以你的問題是*「如何過濾然後繪製選定的行」* – smci

回答

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

+0

我可以在這個問題上增加一層嗎?我怎麼能自動創建許多ggplots(例如,通過循環),它會創建你在上面顯示的內容,但是它會在'Component.name'列中找到的每個不同的字符(藥物名稱)執行它? –