9

私は次のデータを持っています

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

R を使用してハイフンの後の数字を作成し、先頭のゼロを埋めて 3 桁になるようにするにはどうすればよいですか? 結果のフォーマットは次のようになります。

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

3 に答える 3

13

基本ソリューション:

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"
于 2012-11-22T06:30:12.567 に答える
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"
于 2012-11-22T06:01:01.587 に答える