2017-02-18 1 views
0

こんにちは素敵なstackoverflowの友人、Rで正規表現を使用して特定のデータのみを取得する方法は?

私は最近、次のような問題を思い付いた:

は私が必要な項目を取得するためにwhich()を使用し始めRにロードされた膨大なデータテーブルを持ちます。しかし、いくつかのエントリのデータ構造は実際には冗長ではないことが判明しました。

など。刺激と呼ばれるテーブルの1つの部分は、以下を含むことができる:

money_01, money_02, money_3, ..., money_xy 

実際には数字は気にしない。

私は私のテーブルの特定のデータを取得しようとするので、私は通常ん:moneyはあまりにもすべてmoney_xy例カウントすべき

SpecificData <- DataTable[which(DataTable$Block == "1" & DataTable$Orientation == "approach" & DataTable$Stimuli == "money"), c(1,2,3)] 

。どうやってやるの?

ありがとうございました!よろしく、Chris。

編集01:(私を助けてくれてありがとう) テーブルを考慮し、より詳細な例:

Subject, Block, Orientation, Stimuli 
01,  7,  approach, money_73 
02,  2,  approach, person_3 
03,  3,  avoid,  neutral_93 
04,  1,  approach, money_11 

そして、この私はすべての科目を取得したいテーブル、そのブロックと向きからそのブロックをもし

= 1、orientation = approach、stimuli = money

ここで私は "money"の使い方を知らないので、テーブルのmoney_xyのすべてのバリエーションにマッチします。

EDIT2:(あまりにも、他のすべての提案)

イムラン・アリの答えのおかげで[SOLVED]私は問題を解決しました。ありがとう

SpecificData <- DataTable[DataTable$Block == "1" & DataTable$Orientation == "approach" & grepl('money', DataTable$Stimuli), c(1,2,3)] 

:結局のところ、我々は単に、これがもたらした私の特定の場合にgrepl(matching_string, source_string)を使用することができますwhich()を使用する必要はありません!

+0

は、例えば、データセットと予想される出力を提供してください動作するはずです、問題のあなたの説明は今のと全く不明です。 – mtoto

+0

'の'の中には複数の条件があります。それらのすべてを適用したいですか?つまり、&? – G5W

答えて

2
x <- c("money_01", "money_02", "money_3", "someothervalues", "someothervalues2", "money_xy") 

    title   y 
1   money_01 1 
2   money_02 2 
3   money_3 3 
4 someothervalues 4 
5 someothervalues2 5 
6   money_xy 6 

testdata <- data.frame(title=x, y=seq(1:length(x))) 
result <- testdata[grepl('money', testdata$title),] 

    title y 
1 money_01 1 
2 money_02 2 
3 money_3 3 
6 money_xy 6 

更新: あなたのサンプルデータを使用して、次のことが

result <- testdata[grepl('money', testdata$Stimuli) & testdata$Block==1 & testdata$Orientation=="approach", ] 
+2

grepの星はKleeneの星であり、ここでは必要ありません。 – Hugh

+2

最後のチャンクでgreplする必要があります。 – Hugh

+0

私はそれが働いて、イムランアリとヒューに感謝! – Chrizzldi

関連する問題