2017-02-06 15 views
1

Я очень новичок в R. У меня есть числовой вектор, скажем data <- c(1,3, 5, 10, 101). Мне нужно, чтобы каждый элемент был символом, добавлял ноль к отдельным цифрам и не имел более двух символов в каждом элементе. Я использую следующий код:Заполнение и уменьшение символов

pad <- str_pad(data, width = 2, side = "left", pad="0") 

Но это все еще не уменьшает «101» до «10». Какие-либо предложения?

Это отличается от более ранней нити на прокладки, которая не дает мне ответ на то, как уменьшить «101» на «10»

+1

'str_pad' не является функцией базы R. Укажите имена соответствующих пакетов, которые вы используете. – lmo

+1

Возможный дубликат [Добавление начальных нулей с использованием R] (http://stackoverflow.com/questions/5812493/adding-leading-zeros-using-r) – lmo

+1

Я упомянул «Добавление ведущих нулей с использованием R». Но я не мог найти ответ на сокращение трехзначных символов до двух цифр. Код, который я написал, принадлежит самому потоку. –

ответ

0

Вот функция, которая будет делать то, что вы хотите

str_pad = function(data){  
    data = ifelse(abs(data)<10, 
         paste("0", data,sep = ""), 
         ifelse(abs(data)>100, 
           substr(as.character(data),1,2), 
           as.character(data))) 
    return(data) 
} 
2
library(stringr) 

data <- c(1,3, 5, 10, 101) 
data <- as.character(data) 
data <- strtrim(data, 2) 
data <- str_pad(data, width = 2, side = "left", pad = "0") 
data 
# [1] "01" "03" "05" "10" "10" 

Я дробить шаги, но вы могли бы легко гнездятся некоторые из эти шаги также.

+1

Спасибо Крэйг. Вот так! –

 Смежные вопросы

  • Нет связанных вопросов^_^