带关键字的子集数据框
Subset dataframe with keywords
我有一个由推特数据组成的数据框(ID 号,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="|")
并且我制作了原始数据框 (Data1
) 的一个子集 (Data2
),其中 Data2
仅包含 Data1
中的一个或多个观测值的关键字出现在 clean_text
列中。像这样:
Data2 <- Data1[with(Data1, grepl(paste0("\b(?:",paste(KeyWords, collapse="|"),")\b"), clean_text)),]
现在,我想在 Data3
中只有 Data1
中的观察结果,其中关键字 不存在 在 clean_text
列中. 有没有办法对上面的关键字子集进行反向操作?或者,我可以从 Data1
中减去我的 Data2
以获得我的新子集 Data3
?
R 中的 "inverse" 运算符是 !
- 这会将 TRUE 翻转为 FALSE,反之亦然。因此,对于您的示例,您正在寻找的是
Data3 <- Data1[!with(Data1, grepl(paste0("\b(?:",paste(KeyWords, collapse="|"),")\b"), clean_text)),]
我有一个由推特数据组成的数据框(ID 号,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="|")
并且我制作了原始数据框 (Data1
) 的一个子集 (Data2
),其中 Data2
仅包含 Data1
中的一个或多个观测值的关键字出现在 clean_text
列中。像这样:
Data2 <- Data1[with(Data1, grepl(paste0("\b(?:",paste(KeyWords, collapse="|"),")\b"), clean_text)),]
现在,我想在 Data3
中只有 Data1
中的观察结果,其中关键字 不存在 在 clean_text
列中. 有没有办法对上面的关键字子集进行反向操作?或者,我可以从 Data1
中减去我的 Data2
以获得我的新子集 Data3
?
R 中的 "inverse" 运算符是 !
- 这会将 TRUE 翻转为 FALSE,反之亦然。因此,对于您的示例,您正在寻找的是
Data3 <- Data1[!with(Data1, grepl(paste0("\b(?:",paste(KeyWords, collapse="|"),")\b"), clean_text)),]