2017-12-13 13 views
1

私は、関数を記述しようとしています。または、適用ファミリを使用して、探している単語を含むデータフレームの行を選択し、それらをタグのようにマークしています。行には複数のタグがあります。誰かが私を助けてください、私はしばらく固執されていることができます。データフレーム内の行を繰り返し処理して、異なる単語を検出して新しい列に保存するにはどうすればよいですか?

質問が不明な場合、または回答がある場合は、正しい方向に案内してください。とても有難い!

require(stringr) 
require(dplyr) 
df <- data.frame(sentences, rnorm(length(sentences))) 

old = df %>% filter(str_detect(sentences, 'old')) %>% mutate(w = factor("old")) 
new = df %>% filter(str_detect(sentences, 'new')) %>% mutate(w = factor("new")) 
boy = df %>% filter(str_detect(sentences, 'boy')) %>% mutate(w = factor("boy")) 
girl = df %>% filter(str_detect(sentences, 'girl')) %>% mutate(w = factor("girl")) 
tags <- bind_rows(old, new, boy, girl) 

は、だから私は、例えば単語の有限数を選択します:

tags <- c('bananas', 'apples', oranges) 

そして私は、結果は私が選択したすべての単語のための新しい列とdata.frameになりたいです。行に私が選択した単語の1つが含まれている場合、その単語の列は何とかTRUEになっているはずです。そのような

Sentences  bananas  apples  oranges 
sentence1  TRUE   
sentence2     TRUE 
sentence3  TRUE 
sentence4       TRUE 
sentence5     TRUE  TRUE 

または

Sentences  tag1  tag2 
sentence1  bananas   
sentence2  apples 
sentence3  bananas 
sentence4  oranges 
entences5  apples  oranges 

か何かのような何か。私がもっと明確に説明できるかどうか教えてください。

+1

あなたが探している最終的な解決策は何ですか?概念的には、何ができるのでしょうか? –

+0

タグ付けしようとしている有限の既​​知の単語がありますか? – LAP

+0

もう少し説明しようとしましたが、単語の数は有限であり、単語のいずれかが含まれている場合はすべての行にタグを付けることが必要です。私は何が良いかもしれない、各単語のための列かタグ#1#2#3まで最大(タグのnr)を知ることはできません。 – CluelessCoder

答えて

0

本当に適用機能を使用しますか?私はかなりtmパッケージがあなたが探しているものだと確信しています。これはで、最も簡単で堅牢な方法です。です。 DocumentTermMatrix機能を使用すると、必要なものを手に入れることができます。私は自分自身でいくつかの文を精緻化しました(構文レベルが高い)。最も簡単な方法は、すべての単語とを処理して、を検索する単語の列を選択した場合です。

sentence1 <- "This is a bananana" 
sentence2 <- "This is an apple" 
sentence3 <- "This is a watermelon and a banana" 
sentence4 <- "This is a watermelon a banana an apple" 

df_sentence <- rbind(sentence1, sentence2, sentence3, sentence4) 

library(tm) 
vs_sentence <- VectorSource(df_sentence) 
vc_sentence <- VCorpus(vs_sentence) 

clean_sentence <- tm_map(vc_sentence, removePunctuation) 
dtm_sentence <- DocumentTermMatrix(clean_sentence) 
as.matrix(dtm_sentence) 

結果:あなたは提供することができれば

as.matrix(TermDocumentMatrix(clean_sentence)) 
      Docs 
Terms  1 2 3 4 
    and  0 0 1 0 
    apple  0 1 0 1 
    banana  1 0 1 1 
    this  1 1 1 1 
    watermelon 0 0 1 1 

 Terms 
Docs and apple banana this watermelon 
    1 0  0  1 1   0 
    2 0  1  0 1   0 
    3 1  0  1 1   1 
    4 0  1  1 1   1 
また

あなたは、行で列および用語によって文書を入手することができます別の関数ありあなたの文章の一部は、より良い解決策を提供するためにが簡単になるかもしれません。 HTH!

関連する問題