2016-05-01 4 views
1

私はホスピタリティデータを分類しようとしています。列にベクトルの複数の文字列が含まれている場合は、新しい列を作成してください。

私のデータセットは、以下のデータセットのように見えますが、およそです。 400000行の長さ。

dataset<-data.frame(id=c(1001:1005), Role_title = c("Head Chef","Nurse", 
     "Latin America Travel Sales Consultants \xfc\xbe\x8c\xb6\x84\xbcK OTE \xfc\xbe\x8c\xb6\x84\xbcK","Cooks Wanted","Calling all waiters")) 

私が探している用語は、フルストリングだけでなく、ステムでもあり、ベクターの長さは約100行です。

terms=c("chef","cook","wait") 

私は新しい列を作成したいと思いますが、ベクトルから1つの以上の文字列が一致または部分的に行「Role_title」にマッチしている場合は、「用語が含まれています」に1を置く「用語が含まれています」、および0そうでない場合、データセットは以下のようになります。

dataset<-data.frame(id=c(1001:1005), Role_title = c("Head Chef","Nurse", 
     "Acting Director Sales","Cooks Wanted","Calling all waiters"), 
     Contains_terms=c(1,0,0,1,1)) 
terms=c("chef","cook","wait") 

答えて

1

我々はas.integer

library(stringi) 
transform(dataset, Contains_terms = as.integer(stri_detect(toupper(Role_title), 
     regex=paste(toupper(terms), collapse="|")))) 
# id    Role_title Contains_terms 
#1 1001     Head Chef    1 
#2 1002      Nurse    0 
#3 1003 Acting  Director Sales    0 
#4 1004    Cooks Wanted    1 
#5 1005  Calling all waiters    1 

でラップすることによって、バイナリへの論理 vectorを変換し、 patternを作成するために、「用語」ベクトルをINGの paste後に論理ベクトルを返すために stringiから stri_detectを使用することができます

grepの別のオプション(「用語」に多くの要素がある場合も)

我々は(OPのポストで更新されたデータセットに基づく)のみ「ASCII」の文字を持っている「Role_title」内の要素の処理を行いたい場合は
as.integer(Reduce(`|`, lapply(toupper(terms), `grepl`, 
       x=toupper(dataset$Role_title)))) 
#[1] 1 0 0 1 1 

i1 <- stri_enc_mark(dataset$Role_title)=="ASCII" 
i1 
#[1] TRUE TRUE FALSE TRUE TRUE 
dataset$Contains_terms[i1] <- as.integer(Reduce(`|`, lapply(toupper(terms), `grepl`, 
       x=toupper(dataset$Role_title[i1])))) 
dataset$Contains_terms 
#[1] 1 0 NA 1 1 
+0

は、追加の質問はどのようにありますすべてのRole_title用語が文字であることを確認してください(例: "Assistant Caf \ xe9 Manager Rose Bay NSW")これを反映するコードを編集しました。 – monkeyshines

+0

データセット$ Role_title <-gsub( '[[:digit:]]'、 ""、データセット$ Role_title) データセット$ Role_title <-gsub( "[[:punct ::]] "、" "、データセット$ Role_title) – monkeyshines

+0

@MonikaSarderこのアップデートでは、ラテンアメリカの旅行セールスコンサルタントのようなものが私に"¼K OTEü¾ï¶ "K"というものを与えてくれました。例 – akrun

関連する問題