簡體   English   中英

在 R 中刪除包含特定字符串的行

[英]Delete rows containing specific strings in R

我想排除包含字符串“REVERSE”的行,但我的行與單詞不完全匹配,只包含它。

我的輸入數據框:

   Value   Name 
    55     REVERSE223   
    22     GENJJS
    33     REVERSE456
    44     GENJKI

我的預期輸出:

   Value   Name 
    22     GENJJS
    44     GENJKI

這應該可以解決問題:

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

或者更安全的版本是:

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

您可以使用dplyr::filter()並否定grepl()匹配:

library(dplyr)

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

或使用dplyr::filter()並否定stringr::str_detect()匹配:

library(stringr)

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

實際上我會使用:

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

如果所需的搜索詞不包含在任何行中,這將避免刪除所有記錄。

您可以使用stringi包中的 stri_detect_fixed 函數

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

如果它是多個字符串,則可以使用此函數df[!grepl("REVERSE|GENJJS", df$Name),]

您可以使用之前提供的代碼在同一個數據幀 (df) 中使用它

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

或者您可以使用此代碼為數據幀分配不同的名稱

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

基於 BobD59 和隱藏層響應的遲到答案。

這將刪除多個特定字符串,同時避免在任何行中不包含所需搜索詞時刪除所有記錄。

df1 <-
   df[!grepl("REVERSE|GENJJS", df$Name), (invert = TRUE), ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM