【问题标题】:how to add 0's into a name with series numbers如何将0添加到带有序列号的名称中
【发布时间】:2014-03-17 02:42:58
【问题描述】:

我有一个这样的数据框。我生成了第四列(分类单元),它结合了前三列。但是如果 nchar(df$acno) == 5 或 nchar(df$acno) == 4,我想在字母“DC”或“PD”之后添加一个或两个零。这样分类列中的字符串就会是两个字母(DC 或 PD)加上 6 位数字加上 acs 列中的字符(如果有)。 我使用“粘贴”或“substr”函数添加“0”,它给了我类似的警告:要替换的项目数不是替换长度的倍数。如果有人可以帮助我找到最佳解决方案,非常感谢您的帮助。 分类单元列应为:

taxa
DC003654-1
DC004002B
DC004007B
DC002108
DC019976-1
DC029333
PD054606-1
PD086138R
PD019986
PD229333


df = read.table(text="acp   acno    acs bran    taxa
DC  3654    -1  3   DC3654-1
DC  4002    B   3   DC4002B
DC  4007    B   3   DC4007B
DC  2108        2.5 DC2108
DC  19976   -1  2.5 DC19976-1
DC  29333       3   DC29333
PD  54606   -1  4   PD54606-1
PD  86138   R   3   PD86138R
PD  19986       3   PD19986
PD  229333      2.5 PD229333", header=T, stringsAsFactors=F)

【问题讨论】:

    标签: r


    【解决方案1】:

    类似这样的:

    with(df, paste0(acp, sprintf("%06d",acno), acs) )
    # [1] "DC003654-1" "DC004002B"  "DC004007B"  "DC002108"   "DC019976-1"
    # [6] "DC029333"   "PD054606-1" "PD086138R"  "PD019986"   "PD229333" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多