R:如何在字符串中间添加零

时间:2018-12-13 19:27:35

标签: r

我有一个数据集,其位置由这样的字母数字代码定义:

locations<-c('25N35W1', '25N36W1', '25N6W1')
presence<-c(0, 1, 0)

df<-cbind.data.frame(locations, presence)

大多数代码都有7位数字,就像上面的前两位一样,但是其中一些只有6位数字。我想在所有具有六位数字的代码的第三位数字之后添加一个零,同时保留七位数字的代码不变。有人知道怎么做这个吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我们可以使用以下正则表达式插入0。这还有一个额外的优势,即它可以检查您的其余位置代码的格式是否正确:

df$locations <- sub('(?i)(\\d{2}[a-z])(\\d[a-z]\\d)', '\\10\\2', df$locations)

输出:

> df
  locations presence
1   25N35W1        0
2   25N36W1        1
3   25N06W1        0

答案 1 :(得分:1)

使用paste0substr

ind = which(nchar(locations) == 6)
locations[ind] = paste0(substr(locations[ind], 1, 3), "0", substr(locations[ind], 4, 6))