2016-08-10 4 views
3

2つの可変データフレームの1つが文字ベクトルです。 「MyVector」の各行には、ちょうど1つの名前(「ピート」)の文字列が含まれています。名前は、文字列内でその位置が異なることがあります。リスト内の名前と文字列の名前が一致するコードを作成し、その名前をデータフレーム内の新しい変数に抽出したいとします。 名前が常にベクトル "MyVector"の同じ位置にあった場合、MyVectorのサブストリングとして新しい変数を作成して、名前を新しい列に引き出します。 私はStringrからstr_detectの様々なバージョンを無駄にしようとしました。文字列変数の単語のリストを検出し、データフレームの新しい変数に一致する単語を抽出します。

課題:新しい変数に名前を検出または抽出し、その名前が複数の位置にある場合、MyDFに配置する方法を教えてください。

#Create the data frame 
var.1 <-rep(c(1,5,3),2) 

MyVector <- c("I know Pete", "Jerry has a new job","Victor is an employee","How to work with Pete","Too Many Students","Bob is mean") 
    MyDF <-as.data.frame(cbind(var.1,MyVector)) 

#Create a vector of a list of names I want to extract into a new column in the dataframe. 
Extract <- c("Jerry","Pete", "Bob", "Victor") 

#Match would be perfect if I could use it on character vectors 
MyDF$newvar <-match(MyDF$MyVector,Extract) 

私の最後のdata.frameは、以下の出力のようになるはずです。

var.1      MyVector NEWVAR 
1  1    Don knows Pete Pete 
2  5   Jerry has a new job Jerry 
3  3 Victor and Bob are employees Victor 
4  1  How to work with Pete Pete 
5  5   Too Many Students  NA 
6  3     Bob is mean Bob 

答えて

2

私たちは一緒に使用すると、文字列から二つの単語を抽出しに行くかどう

library(stringr) 
MyDF$NEWVAR <- str_extract(MyDF$MyVector, paste(Extract, collapse="|")) 
MyDF$NEWVAR 
#[1] "Pete" "Jerry" "Victor" "Pete" NA  "Bob" 
+2

「エキス」をINGのpastestr_extractを使用することができますか?たとえば、OPの例の行3にはVictorとBobが含まれていますが、答えにVictorだけが返されます。ありがとう。 – Seanosapien

関連する問題