簡體   English   中英

替換單元格中除我要查找的字符串外的所有內容

[英]Replace everything inside a cell except the string I'm looking for

我在數據集中有一個變量,其格式如下:

tornado <- c("TORNADO",                    
             "TORNADO F0",                 
             "Tornado",                   
             "HAIL",        
             "WATERSPOUT TORNADO",       
             "WATERSPOUT-TORNADO",         
             "TORNADOES, TSTM WIND, HAIL", 
             "COLD AIR TORNADO",          
             "HEAT")   

龍卷風在那里很多次,我的目標是刪除單元格中除我要查找的字符串(顯然是龍卷風)之外的所有內容,因此它看起來像這樣:

tornado_2 <- ("Tornado",
              "Tornado",
              "Tornado",
              "HAIL",
              "Tornado",
              "Tornado",
              "Tornado",
              "Tornado",
              "HEAT")

我已經嘗試過:

gsub(pattern = "", replacement = "", x = vector)

str_replace(string="" , pattern="", replacement="")

我使用了"Tornado""[Tornado]""^Tornado."每個REGEX組合"^Tornado." "Tornado[.]." 在gsub和str_replace的pattern部分中,我可以想到但無濟於事。

有人可以提供任何幫助,我將不勝感激!

您可以使用ifelse :如果“ tornado”在字符串中(用grepl定義),則返回“ Tornado”,否則返回原始值。

ifelse(grepl("tornado", tornado, ignore.case = TRUE), "Tornado", tornado)

# [1] "Tornado" "Tornado" "Tornado" "HAIL"    "Tornado" "Tornado" "Tornado"
# [8] "Tornado" "HEAT" 

使用神話般的stringr庫:

library(stringr)

tornado <- c("TORNADO", "TORNADO F0", "Tornado", "HAIL", "WATERSPOUT TORNADO", "WATERSPOUT-TORNADO", "TORNADOES, TSTM WIND, HAIL", "COLD AIR TORNADO", "HEAT")
tornado_2 <- str_replace(tornado, regex(".*Tornado.*", ignore_case = TRUE), "Tornado")
tornado_2

哪個產量

# [1] "Tornado" "Tornado" "Tornado" "HAIL"    "Tornado" "Tornado" "Tornado" "Tornado" "HEAT"   

原理與其他答案類似:不區分大小寫地匹配Tornado大小寫,如果找到則替換完整的字符串。

您可以將sub()ignore.case=TRUE 在正則表達式中,只需找到任何出現的"tornado"然后用兩邊的貪婪匹配.*除去字符串的其余部分。

sub(".*tornado.*", "Tornado", tornado, ignore.case=TRUE)
# [1] "Tornado" "Tornado" "Tornado" "HAIL"    "Tornado" "Tornado" "Tornado"
# [8] "Tornado" "HEAT"  

您還可以通過在前面使用(?i)編寫不區分大小寫的正則表達式。

sub("(?i).*tornado.*", "Tornado", tornado)
# [1] "Tornado" "Tornado" "Tornado" "HAIL"    "Tornado" "Tornado" "Tornado"
# [8] "Tornado" "HEAT"  

暫無
暫無

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

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