1

同じ列にいくつかの異なる文字列を含むテーブルがあります。その列を検索して異なる文字列を見つけ、異なる文字列ごとに異なる結果を返すことができるようにしたいと考えています。たとえば、次のデータ列があるとします。

Seq_ID   Column2
    1. RNA-ATI_1    
    2. RNA-ATI_2
    3.  DNA-FU_1
    4.  FU-DNA_2
    5. DNA-TP1_1
    6. RNA-TP1_2
    7.  RNA-BL_1
    8.  BL-RNA_2

文字列 "ATI" を検索して "ATI" を返し、"FU" を検索して "FU" と "TP1" を返し、"TP1" を返して、別のcolumn2. 単一の値に対してこれを行うために使用できますgreplが、複数の出力に対してそれを行う方法がわかりません。いくつかの注意点は、データが常に同じ順序または同じ記号で区切られているとは限らないことです。

y <- ifelse(grepl("*ATI", tab$Sequence_ID), "Analytical treatment interruption", " ")

これは1つだけで機能するようですが、複数で機能するように拡張する方法がわかりません。

最後に、私はしたいです:

 Seq_ID      Column2
     1.    RNA-ATI_1    ATI
     2.    RNA-ATI_2    ATI
     3.     DNA-FU_1     FU
     4.     FU-DNA_2     FU
     5.    DNA-TP1_1    TP1
     6.    RNA-TP1_2    TP1
     7.     RNA-BL_1     BL 
     8.     BL-RNA_2     BL
4

2 に答える 2

2

呼び出しに複数のパターンを指定できますがregexpr、それらはすべて別個の文字列であると仮定します。例えば:

regmatches(dat$Column2, regexpr("ATI|FU|TP1|BL", dat$Column2))
#[1] "ATI" "ATI" "FU"  "FU"  "TP1" "TP1" "BL"  "BL"

これは、stringi stringretc パッケージでもstr_extractandstri_extract関数を使用して類似しています。上記の @mnel と彼の回答を参照してください。

于 2016-02-04T01:22:24.080 に答える
1

あなたが使用することができますstringr::str_extract_all

y <- stringr::string_extract_all(dat$Column2,"ATI|FU|TP1|BL")
于 2016-02-04T01:24:19.140 に答える