簡體   English   中英

在R中用gsub替換字符串

[英]String replacement with gsub in R

我的RI有以下問題,並希望尋求一些建議和幫助。

我有這個數據框:

數據框

if (!file.exists("storm")){
      dir.create("storm")} fileurl<-"https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
download.file(fileurl,destfile = "storm.csv",method = "auto")
storm1<-read.table("storm.csv",header = TRUE,sep = ",")

提取所需變量

storm1[,c("EVTYPE","FATALITIES","INJURIES","PROPDMG","PROPDMGEXP","CROPDMG","CROPDMGEXP")]

嘗試

我想整理變量,因為數據集具有各種名稱,我僅舉一個例子,以便大家檢查我的問題。

WINTER STORM是我想要的所有這些名稱的字符串
 storm1<-storm1[,EVTYPE:= sapply(EVTYPE,gsub,pattern="^WINTER STORM$|^WINTER STORM/HIGH WINDS$|^WINTER STORM HIGH WINDS$|^WINTER STORM/HIGH WIND$|^HEAVY SNOW/WINTER STORM$|^BLIZZARD/WINTER STORM$|^WINTER STORMS$","WINTER STORM")] 

這就是我所做的。

我當時正在使用sapply更改該EVTYPE列表中的所有名稱,但我的興趣只是更改級別的名稱,僅更改其他名稱,並保持相同的數據框。

問題

輸出是一個只有EVTYPE變量的數據框,我不知道為什么。

期望

老實說,我已經看過gsub的所有示例,這似乎是一個簡單的操作,因為它只是更改字符串,所以我不明白為什么它不起作用。

有人可以幫忙或提出其他建議嗎?

我認為您不需要在這里使用sapply ,因為gsub是“矢量化的”,並且您已經將正則表達式格式化為| 的。 這樣的事情應該可以將所有這些標簽壓縮為“ WINTER STORM”:

storm1$EVTYPES <- gsub(pattern="^WINTER STORM$|^WINTER STORM/HIGH WINDS$|^WINTER STORM HIGH WINDS$|^WINTER STORM/HIGH WIND$|^HEAVY SNOW/WINTER STORM$|^BLIZZARD/WINTER STORM$|^WINTER STORMS$","WINTER STORM",
                       replacement = "WINTER STORM",
                       x = storm1$EVTYPES)

暫無
暫無

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

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