2017-07-31 5 views
1

マイデータフレーム(DF)次のようになります。コメントにはリスト内の単語がいくつ含まれているのですか?

Comments 
----------------- 
1 | comment1 
2 | comment2 
3 | comment3 
4 | comment4 

...

私は2つのリストを作成しています、次のとおりです。

list1<-c("money","finance","aid") 
list2<-c("major","degree")  

私は行を検索します異なる人からのコメントを持つデータフレームでは、 「私はドン:list1内の単語のいずれかが特定の行で発見された場合、counter1は増加すべきであるとlist2の単語がcounter2を発見されたときに、私はのように結果を取得したい

をインクリメントする必要があります

counter1=10 ; counter2=25 

注意を単語の各頻度でカウンタをインクリメントしたい。たとえば、コメントに「お金」と「財務」の両方が含まれている場合、カウンタは1回だけ増分する必要があります。しかし、それが "お金"と "メジャー"を持っている場合、counter1とcounter2の両方が増加するはずです。

答えて

0

リストを|のものにすることができます。一致するものが見つかると、greplはTRUEを返します。例:


サンプル・データ

comments = data.frame(text=c("only list 1 since money","only list 2 since major","both lists money major","money finance list 1 once")) 

         text 
1 only list 1 since money 
2 only list 2 since major 
3 both lists money major 
4 money finance list 1 once 

コード

list1<-c("money","finance","aid") 
list2<-c("major","degree")  

counter1=sum(grepl(paste(list1,collapse="|"),comments$text)) 
counter2=sum(grepl(paste(list2,collapse="|"),comments$text)) 

結果

counter1: 3 
counter2: 2 

希望します。

+0

私のデータフレームではうまく機能しませんでした。相違点に気づいたところで、私は列が1レベルのみの因子であることを発見しましたが、それには2351行があります。あなたはそれを解決するのを助けることができますか? –

+0

データフレームが 'df'で列が' txt'となっている場合は、 'df $ txt < - as.character(df $ txt)'を実行します。それがうまくいかない場合は、その問題に関する新たな質問を開く価値があるかもしれません。ここで述べたような再現可能な例があります(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-再現可能な例)、サンプルデータを提供してください! – Florian

+0

ありがとうフロリアン...それは働いた...私は私の完璧な解決策を得た... –

関連する問題