在R列中的每个字母后添加空格

时间:2017-09-19 09:12:32

标签: r dataframe split tex

我有4列数据框,我需要在每个I之后添加空格,以便分割值。整个数据框有8064行。谢谢。

   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

2 个答案:

答案 0 :(得分:3)

我们可以将gsub与正则表达式结合使用

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)))

答案 1 :(得分:3)

一个想法是使用gsub捕获两个组,然后在它们之间插入一个空格

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