2012-11-22 14 views
7

अंदर की मैं निम्न डेटाआर गद्दी 0 एक स्ट्रिंग

GT-BU7867-09 
GT-BU6523-113 
GT-BU6452-1 
GT-BU8921-12 

मैं आर का उपयोग कैसे पैड अग्रणी शून्य को हाइफन के बाद संख्या बनाने के लिए करते हैं, तो यह तीन अंक होगा? जिसके परिणामस्वरूप प्रारूप इस तरह दिखना चाहिए:

GT-BU7867-009 
GT-BU6523-113 
GT-BU6452-001 
GT-BU8921-012 

उत्तर

11

बेस समाधान:

sapply(strsplit(x,"-"), function(x) 
    paste(x[1], x[2], sprintf("%03d",as.numeric(x[3])), sep="-") 
) 

परिणाम:

[1] "GT-BU7867-009" "GT-BU6523-113" "GT-BU6452-001" "GT-BU8921-012" 
+0

बहुत मदद .. बहुत बहुत धन्यवाद। – geodex

3

stringr और str_pad और strsplit का उपयोग कर एक समाधान

library(stringr) 
    x <- readLines(textConnection('GT-BU7867-09 
GT-BU6523-113 
GT-BU6452-1 
GT-BU8921-12')) 

unlist(lapply(strsplit(x,'-'), 
     function(x){ 
     x[3] <- str_pad(x[3], width = 3, side = 'left', pad = '0') 
     paste0(x, collapse = '-')})) 

[1] "GT-BU7867-009" "GT-BU6523-113" "GT-BU6452-001" 
[4] "GT-BU8921-012" 
1

0s के साथ एक और संस्करण पैकेज stringr

library(stringr) 
x <- gsub("[[:digit:]]+$", str_pad(str_extract(x, "[[:digit:]]+$"), 3, pad = "0"), x) 

अर्थात से str_pad और str_extract का उपयोग कर एक्स के अनुगामी संख्या निकालने, उन्हें पैड 3 के लिए, तो मूल अनुगामी संख्या के लिए इन स्थानापन्न।

संबंधित मुद्दे