gpt4 book ai didi

r - 基于多个字符串的部分匹配的 R 数据帧中的子集行

转载 作者:行者123 更新时间:2023-12-05 02:10:28 27 4
gpt4 key购买 nike

我不认为这个确切的问题已经被问到 - 很多关于基于一个值的子集的东西(即 x[grepl("some string", x[["column1"]]),] ),但不是多个值/字符串。

这是我的数据示例:

#create sample data frame
data = data.frame(id = c(1,2,3,4), phrase = c("dog, frog, cat, moose", "horse, bunny, mouse", "armadillo, cat, bird,", "monkey, chimp, cow"))

#convert the `phrase` column to character string (the dataset I'm working on requires this)
data$phrase = data$phrase

#list of strings to remove rows by
remove_if = c("dog", "cat")

这将给出一个如下所示的数据集:

  id                phrase
1 1 dog, frog, cat, moose
2 2 horse, bunny, mouse
3 3 armadillo, cat, bird,
4 4 monkey, chimp, cow

我想删除第 1 行和第 3 行(因为第 1 行包含“狗”,第 3 行包含“猫”),但保留第 2 行和第 4 行。

  id                phrase
1 2 horse, bunny, mouse
2 4 monkey, chimp, cow

换句话说,我想对 data 进行子集化,使其只有(标题和)第 2 行和第 4 行(因为它们既不包含“狗”也不包含“猫”)。

谢谢!

最佳答案

如果您想将它与 dplyrstringr 混合使用:

library(stringr)
library(dplyr)

data %>%
filter(str_detect(phrase, paste(remove_if, collapse = "|"), negate = TRUE))
# id phrase
# 1 2 horse, bunny, mouse
# 2 4 monkey, chimp, cow

关于r - 基于多个字符串的部分匹配的 R 数据帧中的子集行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com