2017-08-13 5 views
0

クラスプロジェクトのデータをクリーンアップしようとしています。このデータは、1950年から2011年までのNOAA Stormデータを扱っています。嵐の種類(EVTYPE)は48種類ありますが、1000を超えるユニークな項目があります。私は私に与えている、すべての雪関連エントリを見つけようとしています:R 3.4.1 Windows上のgsub - すべての文字列を検索して置き換えます。

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 

は48嵐の種類の一つである「Lake.Effect.Snow」と呼ばれる嵐の種類、があります。その特定の嵐の種類を除外して、他のすべてのエントリを置き換えるにはどうすればよいですか?私は試しました:

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

私は試してみましたが、Lake.Effect.Snowのエントリを無視しても良いです。

+1

''(?<!lake!\\効果\\。)snow」を試して、 'perl = TRUE'を追加してください。 –

+0

*他のすべてのエントリをどのように置き換えることができますか? - しかし、grepで何も置き換えていない場合は、パターンに一致するエントリを抽出するだけです。あなたが意味するものを明確にしてください。 –

+0

gsub()を使用して文字列を実際に置き換えると、コンソールでgrep()コードが表示されただけです。 –

答えて

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) 
関連する問題