R Удалить начальные 0 из строки фактора

Я импортировал несколько файлов Excel в R, используя функцию read.csv().

В файлах меньшего размера начальные 0 в столбце uniqueID были сохранены, например. 085405, 021С1Б, 0051012

Однако в больших файлах начальные 0 были удалены из уникальных идентификаторов, где они содержат только числа, например. 85405, 021С1Б, 51012

Я хотел бы удалить ведущие 0 из всех уникальных идентификаторов, чтобы я мог объединиться.

Я попытался использовать следующий код:

Test$UniqueID2 <- substr(Dataset$UniqueID,regexpr("[^0]",Dataset$UniqueID,nchar(Dataset$UniqueID))

Это вызвало следующую ошибку:

Error in nchar(Dataset$UniqueID) : 
  'nchar()' requires a character vector

Было бы очень признательно решение, которое позволит мне отказаться от начальных 0 в R.


person Leigh    schedule 17.07.2017    source источник


Ответы (1)


Мы можем использовать sub для этого, чтобы соответствовать нулю (0) в начале (^) строки, за которой следует ноль или более чисел ([0-9]*) до конца ($) строки, которая была захвачена как группа и заменена на обратная ссылка (\\1) захваченной группы

sub("^0+([0-9]*)$", "\\1", str1)
#[1] "85405"  "021X1B" "51012"

Если мы хотим удалить из всех идентификаторов

sub("^0+", "", str1)

Или мы можем использовать подход as.numeric

v1 <- as.numeric(str1)
v1[is.na(v1)] <- str1[is.na(v1)]

данные

str1 <- c("085405", "021X1B", "0051012")
person akrun    schedule 17.07.2017
comment
Очень хороший ответ. Может быть лучше, если последняя часть (data str ‹- ....) будет написана в начале ответа. - person Erdogan CEVHER; 01.06.2019