Как добавить начальный числовой идентификатор (не обязательно ноль) в строку символов в r - PullRequest
0 голосов
/ 02 октября 2018

Я прошу прощения, если это дубликат, я искал все содержимое "добавить начальный ноль", которое я могу найти, и я изо всех сил пытаюсь найти решение, с которым я могу работать.У меня есть следующее:

siteid<-c("1","11","111")
modifier<-c("44","22","11")
df<-data.frame(siteid,modifier)

, и я хочу изменить siteid, всегда длиной шесть (6) символов с нулями, чтобы заполнить пробелы.Идентификатор сайта может варьироваться в nchar от 1-3, модификатор всегда имеет длину 2, а число нулей может варьироваться в зависимости от длины идентификатора сайта (так что 6 всегда является конечной измененной длиной).

Мне бы хотелось получить следующий конечный результат:

df
#  siteid modifier mod.siteid
#1      1       44     440001
#2     11       22     220011
#3    111       11     110111

Спасибо за любые предложения или указания.Это также может быть числовым, но похоже, что у манипуляции с персонажем есть больше возможностей ...?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Словарь здесь левый блок и вставка здесь можно использовать один из следующих способов: sprintf() ::

df$mod.siteid <- with(df, sprintf("%s%04d", modifier, as.integer(siteid)))

# Note: 
# code simplified thanks to suggestion by Maurits.

Вывод:

      siteid modifier mod.siteid
1      1       44     440001
2     11       22     220011
3    111       11     110111

Данные :

df <- data.frame(
  siteid   = c("1", "11", "111"),
  modifier = c("44", "22", "11"),
  stringsAsFactors = FALSE
)  

Extra : если вы не хотите оставлять левый пэд с 0, используйтеПакет stringi является одним из вариантов: with(df, paste0(modifier, stringi::stri_pad_left(siteid, 4, "q")))

0 голосов
/ 02 октября 2018
siteid<-c("1","11","111")
modifier<-c("44","22","11")
df<-data.frame(siteid,modifier, stringsAsFactors = FALSE)

df$mod.siteid = paste0( df$modifier, 
                        formatC( as.numeric(df$siteid), width = 4, format = "d", flag="0") )

df

#   siteid modifier mod.siteid
# 1      1       44     440001
# 2     11       22     220011
# 3    111       11     110111
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...