Включить все строки, где встречается значение, в противном случае удалить - PullRequest
1 голос
/ 04 февраля 2020

У меня есть набор данных, df

Subject

Hi
hello
RE: Hello
RE: How is work
No
Ok
RE: What time are 
Hello RE: are you
FW: hello

Я хотел бы включить все строки, где первое слово - RE: и FW, исключая все остальные

Subject


RE: Hello
RE: How is work
RE: What time are 
FW: hello

Вот dput:

 structure(list(Subject = structure(c(2L, 1L, 5L, 6L, 3L, 4L, 
 7L), .Label = c("hello", "HI", "No", "ok", "RE: Hello", "RE:   How     is work", 
 "RE: What time are", "FW: hello"), class = "factor")), class = "data.frame",       row.names = c(NA, 
 -7L))

Я думаю использовать grepl, но не уверен, как это сформулировать.

subset(df, grepl('^RE', 'FW', Subject)) 

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Вы можете комбинировать шаблон с |

subset(df, grepl('^(RE|FW)', Subject))

или используя grep

df[grep('^(RE|FW)', df$Subject), , drop = FALSE]
1 голос
/ 04 февраля 2020

С tidyverse мы можем сделать

library(dplyr)
library(stringr)
df %>%
   filter(str_detect(Subject, '^(RE|FW)'))
#               Subject
#1             RE: Hello
#2 RE:   How     is work
#3     RE: What time are

Или в base R

subset(df, startsWith(as.character(Subject), 
           "RE")|startsWith(as.character(Subject), "FW"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...