2017-02-18 39 views
0

喜可愛的計算器的朋友,如何在R中使用正則表達式來僅獲取特定數據?

最近,我有以下問題上來:

有裝成R巨大的數據表我開始使用which()來得到所需的條目。但事實證明,一些條目中的數據結構並非真正的多餘。

E.g.表中的一個組成部分叫刺激可包含以下內容:

money_01, money_02, money_3, ..., money_xy 

但實際上的數字不在乎。

所以,當我試圖讓我的表的具體數據我通常做:

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

其中money應該算爲所有money_xy箱子了。我怎樣才能做到這一點?

謝謝!問候,克里斯。

編輯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:[解決]

由於伊姆蘭·阿里的回答(和所有其他的建議太)我解決了這個問題。事實證明,沒有必要使用which()我們可以簡單地在我的特定情況下使用grepl(matching_string, source_string)這導致:

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

謝謝!

+0

請提供例如數據集和預期產出,你的問題的說明是截至目前還不是很清楚。 – mtoto

+0

你在'which'中有多個條件。你想要所有這些申請?即將他們與&? – 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

相關問題