将数字格式化为特定的数字位数和自定义标点符号

时间:2018-09-06 14:10:09

标签: r regex

我有这个var s1 = "Blah" var s2 = s1 s1 = "Bleh" print(s1,s2) //Prints "Bleh Blah"

DF1

另外 cpf 702.464.462-18 067.282.769-71 017.811.255-03 806.392.831-87 074.256.613-73 080.405.147-03

DF2

我想格式化这些数字,因此 cpf 1: 6685540966 2: 1301301922 3: 80673503020 4: 13575505705 5: 36752823847 6: 1756061459 可以与DF2相同,如下所示:

DF1

所以基本上我需要将它们转换为带有0的11位数字,并像这样指定标点符号。 有什么想法怎么做吗?

编辑: 使用 cpf 1: 066.855.409-66 2: 013.013.019-22 3: 806.735.030-20 4: 135.755.057-05 5: 367.528.238-47 6: 017.560.614-59 包装的str_pad,我做到了:

stringr

它奏效了。但是我不知道如何设置标点符号。

2 个答案:

答案 0 :(得分:0)

我们可以使用formatC

cpf <- c(6685540966, 1301301922, 80673503020, 13575505705, 36752823847, 1756061459)
formatC(x = cpf / 100, 
            digits = 2, 
            width = 12, 
            decimal.mark = "-", 
            big.mark = ".", 
            flag = "0", 
            format = "f")
#[1] "066.855.409-66"
#[2] "013.013.019-22"
#[3] "806.735.030-20"
#[4] "135.755.057-05"
#[5] "367.528.238-47"
#[6] "017.560.614-59"

答案 1 :(得分:0)

这可以通过使用format()(又称为pretty()函数)格式化数字,然后填充零来实现。

  

...像这样指定标点符号。

#Sample data
DF2<- c(6685540966, 1301301922, 80673503020, 13575505705, 36752823847, 1756061459)

DF3<-format(DF2/100, 11, digits=10, decimal.mark="-", big.mark=".")

[1] "66.855.409-66"  "13.013.019-22"  "806.735.030-20" "135.755.057-05" "367.528.238-47" "17.560.614-59" 
  

我需要将它们转换为0的11位数字

这称为“前导零填充”。 str_pad()中的stringr与粘贴类似,可以清楚地表明您要填充数字。

library(stringr)
DF4<-str_pad(DF3, 14, pad = "0")

[1] "066.855.409-66" "013.013.019-22" "806.735.030-20" "135.755.057-05" "367.528.238-47" "017.560.614-59"