R: Как добавить ноль в середину строки - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть набор данных с местоположениями, определенными буквенно-цифровыми кодами, такими как:

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

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

Большинство кодов имеют 7 цифр, как и первые две выше, но некоторые из них имеют только шесть цифр.Я хотел бы добавить ноль после третьей цифры ко всем кодам, которые имеют шесть цифр, оставляя семизначные коды такими, какие они есть.Кто-нибудь знает, как это сделать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

С paste0 и substr

ind = which(nchar(locations) == 6)
locations[ind] = paste0(substr(locations[ind], 1, 3), "0", substr(locations[ind], 4, 6))
0 голосов
/ 13 декабря 2018

Мы можем использовать следующее регулярное выражение для вставки 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...