2015-11-20 7 views
2

У меня есть следующие dataframeИспользуйте grepl назвать variabele

amount <- c(10,12,14) 
description <- c("bankafschrift", "ABN", "albert heijn") 
df <- data.frame(description, amount) 


head(df) 
description amount 
1 bankafschrift  10 
2   ABN  12 
3 albert heijn  14 

Теперь я хочу, чтобы сделать немного, где я интеллектуальный анализ текста назначить запись в ряды на основе слов в их описании. Поэтому описание, содержащее: «bankafschrift», я хочу заявить как «Банк». Я знаю, как получить истинное/ложное значение, как это:

df$post <- grepl('A 

Который дает мне:

description amount post 
1 bankafschrift  10 FALSE  
2   ABN  12 TRUE   
3 albert heijn  14 FALSE  

Но я хочу пост, чтобы сказать «бакалея» в случае grepl утверждение верно. Любые предложения о том, как это сделать?

И на вершине этого:

Если я хочу больше элементов для определения поста как бы я использовать список?

Если это сделать:

bank_items <- c("Bank", "ABN") 
f$post <- grepl(bank_items,df$description) 

Это дает мне следующую ошибку:

Warning message: 
In grepl(bank_items, df$description) : 
argument 'pattern' has length > 1 and only the first element will be used 
+2

Вы уверены, что это правильный путь для решения этой проблемы? Может быть, таблица поиска может быть проще, если у вас много разных описаний и/или категоризации. – Heroka

ответ

1

Мы можем paste в 'bank_items' вместе и использовать его в качестве pattern в grepl.

i1 <- grepl(paste(bank_items, collapse='|'), df$description) 
ifelse(i1, 'Bank cost', 'Not Bank cost') 
+0

сладкое спасибо. И вы также знаете, как решить мою первую проблему? –

+0

@MarcvanderPeet Извините, но какая первая проблема. – akrun

+0

Я не хочу, чтобы я сказал true или false, но в случае, если grepl (paste (bank_items, collapse = '|'), df $ description) истинно, я хочу, чтобы df $ post была «Стоимость банка» –