[英]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.