删除r中包含某些字符串的变量[重复]

Posted

技术标签:

【中文标题】删除r中包含某些字符串的变量[重复]【英文标题】:removing variables containing certain string in r [duplicate] 【发布时间】:2018-08-08 20:36:50 【问题描述】:

我有数百个观察结果,我想删除包含字符串“english basement”的观察结果。我似乎找不到这样做的正确语法。我只能弄清楚如何用那个字符串保持观察。例如,我使用下面的代码仅获取包含字符串的观察结果,并且效果很好:

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

现在我想要一个数据集 top_10mpEB,它不包括包含“english basement”的观测值。非常感谢您的帮助。

【问题讨论】:

另类骗子:***.com/questions/6650510/… ;***.com/questions/22249702/… @MikeH.,感谢您注意到重复。我认为first duplicate suggestion 在这里非常适用。我认为这也与 Abby_studies_fish 似乎被否决的原因有关。 【参考方案1】:

我不知道你的数据是什么样的,但也许这个例子对你有帮助 - 我认为你只需要否定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

【讨论】:

【参考方案2】:

您可以使用 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, ]

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

!= 做同样的事情,但只有一个功能 请注意,!= 更清楚一点。然而,在这里你可以准确地捕捉到“英国地下室”,但如果你需要捕捉到“英国地下室和其他东西”之类的东西,这是行不通的。 感谢 Valentin,后来我意识到他的字符串可能比仅“英语地下室”更广泛,您的回答涵盖了所有场景。 Rich,如果你想给我投反对票,你可以多解释一下,谢谢 @Abby_studies_fish,我同意这并不清楚数据应该是什么样子,您提出的解决方案是否有效。 感谢大家的帮助。 !似乎成功了。

以上是关于删除r中包含某些字符串的变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除数据框中任何向量中包含字符串的行

在 C 字符串中包含双引号 (") [重复]

tesseract的训练图像中包含重复字符会影响识别率吗

用SQL怎么把一列所有字符串中包含的空格都删除呢

jquery验证器避免句子中包含某些单词

排除某些其他文件中包含的键字符串文件的所有行