Подтвердить что ты не робот

Удалить строки, содержащие определенные строки в R

Я хотел бы исключить строки, содержащие строку "REVERSE", но мои строки не совпадают точно со словом, просто добавьте его.

Мой входной кадр данных:

   Value   Name 
    55     REVERSE223   
    22     GENJJS
    33     REVERSE456
    44     GENJKI

Мой ожидаемый результат:

   Value   Name 
    22     GENJJS
    44     GENJKI
4b9b3361

Ответ 1

Это должно сделать трюк:

df[- grep("REVERSE", df$Name),]

Или более безопасная версия:

df[!grepl("REVERSE", df$Name),]

Ответ 2

На самом деле я бы использовал:

df[ grep("REVERSE", df$Name, invert = TRUE) , ]

Это позволит избежать удаления всех записей, если искомое слово поиска не содержится ни в одной из строк.

Ответ 3

Вы можете использовать функцию stri_detect_fixed из пакета stringi

stri_detect_fixed(c("REVERSE223","GENJJS"),"REVERSE")
[1]  TRUE FALSE

Ответ 4

Вы можете использовать dplyr::filter() и отменить совпадение grepl():

library(dplyr)

df %>% 
  filter(!grepl('REVERSE', Name))

Или с dplyr::filter() и отрицанием совпадения stringr::str_detect():

library(stringr)

df %>% 
  filter(!str_detect(Name, 'REVERSE'))

Ответ 5

Вы можете использовать его в той же самой датафрейме (df), используя ранее предоставленный код

df[!grepl("REVERSE", df$Name),]

или вы можете присвоить другому датафрейму другое имя, используя этот код

df1<-df[!grepl("REVERSE", df$Name),]