テーブルの各行のテキストを取得し、これらのテキストを別のテーブルで照合し、すべての一致を含む新しいテーブルを作成します

オマールコスクン

この質問を例を挙げて説明しましょう。2つのデータフレームがあります。

  df1 <- data.frame(Gene=c(1,2,3,4,5,6,7,8),
                 Description=c("ribonuclease HII", "Leucyl-tRNA synthetase", "Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195", "Arginyl-tRNA synthetase (EC 6.1.1.19)", "PAS domain S-box protein", "ribonuclease HII", "Isoleucyl-tRNA synthetase", "Succinyl-CoA ligase"),
                 Species=c("aa", "bb","aa","cc","ee","ff","aa","dd"),
                 Number1= c(1,0,3,20,99,100,31,123),
                 Number2 =c(1000, 12636,12,455,231,454,123,1), stringsAsFactors = FALSE)

   > df1
  Gene                                       Description Species Number1 Number2
1    1                                  ribonuclease HII      aa       1    1000
2    2                            Leucyl-tRNA synthetase      bb       0   12636
3    3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195      aa       3      12
4    4             Arginyl-tRNA synthetase (EC 6.1.1.19)      cc      20     455
5    5                          PAS domain S-box protein      ee      99     231
6    6                                  ribonuclease HII      ff     100     454
7    7                         Isoleucyl-tRNA synthetase      aa      31     123
8    8                               Succinyl-CoA ligase      dd     123       1

そして、興味のある遺伝子名を含むdf2:

 df2 <- data.frame(Description=c("ribonuclease HII", "Leucyl-tRNA synthetase", "Arginyl-tRNA synthetase (EC 6.1.1.19)"), stringsAsFactors = FALSE)

    > df2
                            Description
1                      ribonuclease HII
2                Leucyl-tRNA synthetase
3 Arginyl-tRNA synthetase (EC 6.1.1.19)

私の質問の要約:

ここでは、df2の各行のテキストをdf1に一致させて、新しいテーブルに配置したいと思います。たとえば、この関数はdf1の「リボヌクレアーゼHII」を検索し、このテキストを含むすべての行を取得します。次に、df1などのdf2(ロイシル-tRNAシンテターゼ)の次の行をチェックします...すべての検索が終了したら、それらをまとめます。期待される出力は、次の行を含むテーブルである必要があります。

   > df1
  Gene                                       Description Species Number1 Number2
1    1                                  ribonuclease HII      aa       1    1000
2    6                                  ribonuclease HII      ff     100     454
3    2                            Leucyl-tRNA synthetase      bb       0   12636
4    3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195      aa       3      12
5    4             Arginyl-tRNA synthetase (EC 6.1.1.19)      cc      20     455

forループでgrep関数を試してみましたが、うまくいきませんでした。ここで注意が必要な部分があります。「アルギニルtRNAシンテターゼ(EC 6.1.1.19)」を検索すると、「アルギニルtRNAシンテターゼ(EC 6.1.1.19)17855:19195」も検出されるはずです。ただし、関数が「ロイシル-tRNAシンテターゼ」を検索する場合、「ロイシル-tRNAシンテターゼ」と同じ文言を含む「イソロイシル-tRNAシンテターゼ」は使用しないでください。

前もって感謝します。タイトルや本文の編集についてのご提案もお待ちしております!

アンドリュー

を使用grepl()して、目的の結果を得ることができますまず、検索パターンを作成します(これには単語の境界("\\b")がないため、一致するものが検索されます)。次に、を使用する以外のすべてのメタ文字をエスケープ"|"gsub()、を使用grepl()してdf1の行をサブセット化します

new_pat <-paste0(df2$Description, collapse = "|")
new_pat <- gsub("([][{}().+*^$\\?])", "\\\\\\1", new_pat)

df1[grepl(new_pat, df1$Description), ]
  Gene                                       Description Species Number1 Number2
1    1                                  ribonuclease HII      aa       1    1000
2    2                            Leucyl-tRNA synthetase      bb       0   12636
3    3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195      aa       3      12
4    4             Arginyl-tRNA synthetase (EC 6.1.1.19)      cc      20     455
6    6                                  ribonuclease HII      ff     100     454

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ