2017-09-03 9 views
1

データ/数値のセットから特定の要因を除外するコードを作成しようとしています。データセットから値を除外する

私は次のように書かれている:

ここ
x <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0908700465DAG36", "0909700565G379") 

y <- c("1407741214DAG359", "2211682828DAG359", "1304410201DAG359", "0","0") 

私は次のように書いてみましたDAG36G379

を含む値除外する:

newdata.x <- x[ x != "DAG36", "G379" ] 

しかし、コードをDAG36とG379のみを含む値を除外し、DAG36またはG379

私のお手伝いができますか?

+3

たぶん、あなたは 'grepを探しています( "DAG36 | G379"、X、値= TRUE、反転= TRUE)'。 – nicola

答えて

3

あなたが探しているものはgrep()またはgrepl()です。両方の関数は、指定された文字列または文字列のベクトル内のパターンを検索します。

あなたが探しているパターンはDAG36G379です。これはregular expressionsDAG36|G379のように表現できます。

grep("DAG36|G379", x) 
# [1] 4 5 

grepl("DAG36|G379", x) 
# [1] FALSE FALSE FALSE TRUE TRUE 

ご覧のとおり、これらの2つの機能は同じものになりますが、実際には同じ意味で使用できます。今、あなたはゼロで、関連する文字列を置き換えるためにインデックスを使用することができます。

x[ grepl("DAG36|G379", x) ] <- 0 

x <- x[ grepl("DAG36|G379", x) ]     # Easier version of removing relevant strings 
x <- grep("DAG36|G379", x, invert = T, value = T) # More direct version 
+1

'F'と' T'ではなく 'TRUE'と' FALSE'を使用するほうが堅牢です。人がスクリプトで 'T < - FALSE'を書くのを止めるものは何もありません。 – lmo

関連する問題