Поднабор данных с ключевыми словами - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть фрейм данных, состоящий из данных твиттера (идентификационный номер, follower_count, clean_text).Я заинтересован в разделении моего фрейма данных на два подмножества: одно, где присутствуют ключевые слова, и другое, где ключевые слова не присутствуют.

Например, у меня ключевые слова хранятся в виде значения:

KeyWords <- c("abandon*", "abuse*", "agitat*" ,"attack*", "bad", "brutal*",
                       "care", "caring", "cheat*", "compassion*", "cruel*", "damag*",
                       "damn*", "destroy*", "devil*", "devot*", "disgust*", "envy*",
                       "evil*", "faith*","fault*", "fight*", "forbid*", "good", "goodness",
                       "greed*", "gross*", "hate", "heaven*", "hell", "hero*", "honest*",
                       "honor*", "hurt*","ideal*", "immoral*", "kill*",  "liar*","loyal*",
                       "murder*", "offend*", "pain", "peace*","protest", "punish*","rebel*",
                       "respect", "revenge*", "ruin*", "safe*", "save", "secur*", "shame*",
                       "sin", "sinister", "sins", "slut*", "spite*", "steal*", "victim*",
                       "vile", "virtue*", "war", "warring", "wars", "whore*", "wicked*",
                       "wrong*", "benefit*", "harm*", "suffer*","value*") %>% paste0(collapse="|")

И я сделал подмножество (Data2) моего исходного кадра данных (Data1), где Data2 состоит только из наблюдений в Data1, где присутствует одно или несколько ключевых словв столбце clean_text.Вот так:

Data2 <- Data1[with(Data1, grepl(paste0("\\b(?:",paste(KeyWords, collapse="|"),")\\b"), clean_text)),]

Теперь я хочу сделать Data3, где только наблюдения в Data1, где ключевыми словами являются , отсутствуют в столбце clean_text. Есть ли способ сделать обратное для моего поднабора ключевых слов выше?Или я могу вычесть свой Data2 из Data1, чтобы получить новое подмножество, Data3?

1 Ответ

0 голосов
/ 20 ноября 2018

«Обратный» оператор в R равен ! - это переключит ИСТИНА в ЛОЖЬ и наоборот.Итак, с вашим примером, что вы ищете, это

Data3 <- Data1[!with(Data1, grepl(paste0("\\b(?:",paste(KeyWords, collapse="|"),")\\b"), clean_text)),]
...