R 3.4.1 gsub在Windows 10上 - 查找并替换除。之外的所有字符串

时间:2017-08-13 18:39:01

标签: r regex gsub

我正在尝试清理类项目的数据。该数据涉及1950年至2011年的NOAA Storm数据。风暴类型(EVTYPE)应该只有48个不同的级别,但有超过1000个唯一条目。我试图找到所有与雪相关的条目,这给了我:

 table(grep("snow", temp$EVTYPE, ignore.case = TRUE, value = TRUE))

  ACCUMULATED.SNOWFALL               BLOWING.SNOW              COLD.AND.SNOW              DRIFTING.SNOW 
                     4                          5                          1                          1 
        EARLY.SNOWFALL             EXCESSIVE.SNOW           FALLING.SNOW.ICE                 FIRST.SNOW 
                     7                         25                          2                          2 
            HEAVY.SNOW          HEAVY.SNOW.SHOWER         HEAVY.SNOW.SQUALLS                   ICE.SNOW 
                 13988                          1                          1                          4 
      LAKE.EFFECT.SNOW           LATE.SEASON.SNOW       LATE.SEASON.SNOWFALL                  LATE.SNOW 
                   656                          1                          3                          2 
            LIGHT.SNOW        LIGHT.SNOW.FLURRIES LIGHT.SNOW.FREEZING.PRECIP             LIGHT.SNOWFALL 
                   174                          3                          1                          1 
         MODERATE.SNOW          MODERATE.SNOWFALL           MONTHLY.SNOWFALL             MOUNTAIN.SNOWS 
                     1                        101                          1                          1 
       RECORD.MAY.SNOW                RECORD.SNOW            RECORD.SNOWFALL         RECORD.WINTER.SNOW 
                     1                          2                          2                          3 
     SEASONAL.SNOWFALL                       SNOW          SNOW.ACCUMULATION              SNOW.ADVISORY 
                     1                        425                          1                          1 
          SNOW.AND.ICE             SNOW.AND.SLEET          SNOW.BLOWING.SNOW               SNOW.DROUGHT 
                     4                          5                          6                          4 
              SNOW.ICE               SNOW.SHOWERS                 SNOW.SLEET                SNOW.SQUALL 
                     1                          5                          5                          5 
          SNOW.SQUALLS         THUNDERSNOW.SHOWER        UNUSUALLY.LATE.SNOW 
                    14                          1                          1 

有一种名为“Lake.Effect.Snow”的风暴类型,它是48种风暴类型之一。如何在排除特定风暴类型的同时替换所有其他条目?我试过了:

table(grep("([^lake]?)snow", temp$EVTYPE, ignore.case = TRUE, value = TRUE))

尝试忽略Lake.Effect.Snow条目,但没有好处。

1 个答案:

答案 0 :(得分:0)

stringr::str_detect与if.else一起使用。

library("stringr")

temp$EVTYPE <- if.else(str_detect(temp$EVTYPE, regex("snow", ignore_case = TRUE)) & temp$EVTYPE != "Lake.Effect.Snow", "Snow", temp$EVTYPE)