2017-12-21 6 views
0

ifelse文を使って変数のrのcase文と似たようにしたいと思います。例えば、私は、次の列ベクトルを持って言うことができます「Letter_Test」は、データフレームに:ケース好きなときにR

アルファ - テスト、ベータテスト、ゼタテスト、アルファ - 二、ベータ - 二

私は」基本的にデータがAlpha、次に 'Alpha'のようなものであれば、列結果を返します。

SQLでは(Letter_Test LIKE '%Alpha%' THEN Alpha else 'Letter-Test'が終了した場合)です。

+0

dplyr :: case_when' 'を参照してください:https://www.rdocumentation.org/packages/dplyr/versions/0.7.3/topics/case_when – www

+0

あなたは' sqldf'ライブラリを使用して、実際に使用することができますSQLコマンド。そうでなければ、私は正規表現が好きです(これは私の最初の選択です)。 'grepl(" Alpha "、df $ Letter_Test、fixed = TRUE)'は論理ベクトルを返すので、 'ifelse()'を簡単にラップして値を代入することができます。 – Mako212

答えて

0

実際にはわからないが、あなたが意味する場合は、「アルファ」列文字であるかどうかをテストしたいですテストはTRUEになり、FALSEになると、単語がfounであればTRUEを返します。 d。

それとも、データフレームに直接新しい列に結果を置くことができます。

> df$AplhaTest <- ifelse(test = grepl("Alpha", df$Letter.Test), yes = "Alpha", no = df$Letter.Test) 
> df 
    Letter.Test AplhaTest 
1 Alpha - Test  Alpha 
2 Beta- Test Beta- Test 
3 Zeta-Test Zeta-Test 
4 Alpha-Two  Alpha 
5  Beta-Two Beta-Two 
+0

Greplはここですばらしく働いて、私がする必要があり、実装が簡単でした。ありがとう! –

0

一つのオプション:

new_thing <- ifelse("Alpha" %in% df$Letter_Test, "Alpha", "Letter-Test") 

別のオプション:私は右の質問を得た場合

new_thing2 <- gsub(".*(Alpha).*", "\\1", df$Letter_Test) 
1

は)(%述語などの および%をcase_whenを使用してください。

case_when(
     species %like% "Alpha"  ~ "Alpha", 
     TRUE      ~ "Alpha" 
    ) 
関連する問題