2017-11-06 4 views
1

と異なる長さのセミコロンシーケンスを削除します。このデータフレームのいくつかのデータを考慮する正規表現

test <- data.frame(strings = c('a;b;c', 'd;e;f;g;h;i;j;k;l;m', 'n;o;p;q;r', '')) 

特長:

  1. test <- data.frame(strings = c('a;b;c;;;;;;;', 'd;e;f;g;h;i;j;k;l;m', 'n;o;p;q;r;;;;;', ';;;;;;;;;')) 
    

    はどうやって取得するには、すべての末尾のセミコロンを削除するには行当たり最大9セミコロン(最大10文字)。

  2. 行に文字が含まれていない場合はセミコロンが常に9に追加されます。
  3. 行に文字が含まれていない場合はセミコロンが9個あります。

答えて

5

あなたが望む正規表現は、「1つ以上のセミコロンとそれに続く行末」と言います。だから、これは動作します:

library(dplyr) 
test %>% 
    mutate(newstrings = gsub(";{1,}$", "", strings)) 

       strings   newstrings 
1  a;b;c;;;;;;;    a;b;c 
2 d;e;f;g;h;i;j;k;l;m d;e;f;g;h;i;j;k;l;m 
3  n;o;p;q;r;;;;;   n;o;p;q;r 
4   ;;;;;;;;; 
+2

'mutate'が – zacdav

+1

おなじみそれとも' GSUBにそれを維持していない人のためどこから来るかに追加します。はい、私は好き ' –

4

あなたがそれらをトリミングするために、「あなたの文字列の末尾に1つの以上のセミコロンのすべての列を選択し、」でそれを置き換えるために、次の正規表現を使用することができます。

;+$ 
+1

完全に単純であることを(、「」、「+ $」テスト$文字列を) '; +私の最初の急いでいる努力よりも良い。 – neilfws

関連する問題