简体   繁体   English

Windows 10上的R 3.4.1 gsub-查找并替换所有字符串

[英]R 3.4.1 gsub on Windows 10 - find and replace all strings except for

I am trying to clean up data for a class project. 我正在尝试为课程项目清理数据。 The data deals with NOAA Storm data from 1950 to 2011. The storm types (EVTYPE) are only supposed to be 48 different levels, but there are over 1000 unique entries. 该数据处理的是1950年至2011年的NOAA风暴数据。风暴类型(EVTYPE)假定为48个不同级别,但是有1000多个唯一条目。 I am trying to find all the snow related entries, which gives me: 我正在尝试查找所有与雪相关的条目,这给了我:

 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 

There is a storm type called "Lake.Effect.Snow", which is one of the 48 storm types. 有一个称为“ Lake.Effect.Snow”的风暴类型,这是48个风暴类型之一。 How can I replace all of the other entries while excluding that particular storm type? 在排除特定风暴类型的同时,如何替换所有其他条目? I've tried: 我试过了:

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

to try and ignore the Lake.Effect.Snow entries, but no good. 尝试忽略Lake.Effect.Snow条目,但效果不好。

Use stringr::str_detect with if.else. stringr::str_detect与if.else stringr::str_detect使用。

library("stringr")

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM