如何将0添加到带有序列号的名称中

时间:2014-03-17 02:42:58

标签: r

我有这样的数据框。我生成了第四列(分类群),它结合了前三列。但是我想在字母“DC”或“PD”之后添加一个或两个零,如果nchar(df $ acno)== 5或nchar(df $ acno)== 4.那么分类列中的字符串会是两个字母(DC或PD)加6个数字加上列acs中的字符(如果有的话)。 我用“paste”或“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)

1 个答案:

答案 0 :(得分:1)

这样的事情:

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