删除包含r中某些字符串的变量

时间:2018-02-28 21:01:00

标签: r stringr

我有数百个观察结果,我想删除那些包含字符串"英语地下室"的观察结果。我似乎无法找到正确的语法。我只能弄清楚如何用该字符串保持观察。例如,我使用下面的代码只获得包含字符串的观察结果,并且它完美地运行:

eng_base <- zdata %>%
filter(str_detect(zdata$ListingDescription, “english basement”))

现在我想要一个数据集top_10mpEB,它排除包含&#34;英语地下室&#34;的观测值。非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我不知道你的数据是怎样的,但也许这个例子可以帮助你 - 我认为你只需要否定str_detect返回的逻辑向量:

library(dplyr)
library(stringr)
zdata <- data.frame(ListingDescription = c(rep("english basement, etc",3), letters[1:2] ))
zdata
#  ListingDescription
#1   english basement, etc
#2   english basement, etc
#3   english basement, etc
#4                  a
#5                  b
zdata %>%
  filter(!str_detect(ListingDescription, "english basement"))
#   ListingDescription
#1:                  a
#2:                  b

或使用data.table包(不需要stringr::str_detect):

library(data.table)
setDT(zdata)
zdata[! ListingDescription %like% "english basement"]
#   ListingDescription
#1:                  a
#2:                  b

答案 1 :(得分:0)

您可以使用grepl():

执行此操作
x <- data.frame(ListingDescription = c('english basement other words description continued', 
                              'great fireplace and an english basement',
                              'no basement',
                              'a house with a sauna!',
                              'the pool is great... and wait till you see the english basement!',
                              'new listing...will go fast'),
            rent = c(3444, 23444, 346, 9000, 1250, 599))


x_english_basement <- x[grepl('english basement', 
x$ListingDescription)==FALSE, ]

答案 2 :(得分:-1)

您可以使用dplyr轻松过滤数据框。

library(dplyr)
new_data <- data %>%
   filter(!ListingDescription=="english basement")

!一旦我意识到这意味着“不等于”,我就成了我最好的朋友。