这个问题在这里已有答案:
我有数百个观察,我想删除包含字符串“english basement”的那些。我似乎无法找到正确的语法。我只能弄清楚如何用该字符串保持观察。例如,我使用下面的代码只获得包含字符串的观察,并且它完美地工作:
eng_base <- zdata %>%
filter(str_detect(zdata$ListingDescription, “english basement”))
现在我想要一个数据集top_10mpEB,它排除包含“英语地下室”的观测。非常感谢您的帮助。
我不知道你的数据是怎样的,但也许这个例子可以帮助你 - 我认为你只需要否定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
你可以使用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, ]
您可以使用dplyr轻松过滤数据帧。
library(dplyr)
new_data <- data %>%
filter(!ListingDescription=="english basement")
的!一旦我意识到这意味着“不等于”,我就成了我最好的朋友