添加条件前导或尾随零

时间:2014-01-20 03:38:09

标签: r conditional trailing leading-zero

我需要帮助有条件地添加前导或尾随零。

我有一个数据框,其中一列包含icd9诊断。作为向量,该列看起来像:

"33.27" "38.45" "9.25" "4.15" "38.45" "39.9" "84.1" "41.5" "50.3" 

我需要所有值的长度为5,包括中间的句点(不计算“”)。如果值在周期之前有一位数,则需要具有前导零。如果值在句点之后有一位数,则最后需要为零。所以结果应该是这样的:

"33.27" "38.45" "09.25" "04.15" "38.45" "39.90" "84.10" "41.50" "50.30" 

这是R的矢量:

icd9 <- c("33.27", "38.45", "9.25", "4.15", "38.45", "39.9", "84.1", "41.5", "50.3" )

4 个答案:

答案 0 :(得分:8)

这是一行

formatC(as.numeric(icd9),width=5,format='f',digits=2,flag='0')

答案 1 :(得分:0)

使用这个名为change的函数接受最大字符数的参数,我认为它可以帮助

 change<-function(x, n=max(nchar(x))) gsub(" ", "0", formatC(x, width=n))
    icd92<-gsub(" ","",paste(change(icd9,5)))

答案 2 :(得分:0)

将矢量转换为数字后,您也可以使用sprintf

sprintf("%05.2f", as.numeric(icd9))
[1] "33.27" "38.45" "09.25" "04.15" "38.45" "39.90" "84.10" "41.50" "50.30"

备注

  • ?sprint中的示例,以便找到正确的格式。
  • 由于数值精确度存在引入错误的风险,但在示例中效果很好。

答案 3 :(得分:0)

ICD-9代码具有一些格式设置方面的怪癖,可能会导致通过简单的字符串处理引起的误解。 CRAN上的icd软件包可以处理ICD处理中的所有极端情况,并且已经被许多R用户使用了大约六年的实战测试。