2017-09-19 20 views
0

Iデータフレームに4列あり、それぞれの後にスペースを追加して値を分割する必要があります。全体のデータフレームは8064行あります。ありがとうございました。Rの各文字の後に空白を追加する

CustomerI V1 V2  V3 
1 1231231231 l22I34 l22 l22 
2 1231231233 l7  l7I19 l7 
3 1231231234 l31  l7 l31 
4 1231231235 l31l7 l7 l31l7 
5 1231231236 l16  l22 l16 
6 1231231237 l31  l31 l31 

望ましい結果

 CustomerI V1  V2  V3 
    1 1231231231 l22 I34 l22  l22 
    2 1231231233 l7  l7 I19 l7 
    3 1231231234 l31  l7  l31 
    4 1231231235 l31 l7 l7  l31 l7 
    5 1231231236 l16  l22  l16 
    6 1231231237 l31  l31  l31 

答えて

3

ひとつのアイデアはを用いることであろうとしてgsubを使用することができますで2つのグループをキャプチャし、その間にスペースを挿入します

dd[-1] <- lapply(dd[-1], function(i) gsub('([A-Za-z][0-9]+)([A-Za-z][0-9]+)', '\\1 \\2', i)) 
+0

ありがとう、これは私のデータで動作します。しかし、最初のコードの後に​​I22I34I8I3I59のような長いコードを分割しないため、何らかの理由で2xを実行する必要があります。ありがとう。 – ThomasJohnson

+0

@ThomasJohnsonあなたはakrunのソリューションを試すことができます。それは正常に動作します(私は今あなたの新しい要件で私のansを修正する時間がない - できるだけ早く行う) – Sotos

3

我々は正規表現前後参照

df1[-1] <- lapply(df1[-1], function(x) 
        gsub("(?<=[0-9])(?=[[:alpha:]])", " ", x, perl = TRUE)) 

またはキャプチャグループ

df1[-1] <- lapply(df1[-1], function(x) trimws(gsub("([[:alpha:]])", " \\1", x))) 
関連する問題