【发布时间】:2020-01-23 13:38:29
【问题描述】:
我有一个对象,它是一个带有向量的巨大矩阵,它包含一个三个字母的字符串,后跟一个数字,例如:
"aaa1" , "aaa2" , "aaa3" , "bbb1" ...
我想重新编写此列,以便值 1-9 包含 01-09,例如:
"aaa01" , "aaa02" , "aaa03" , "bbb01" ...
有没有办法有效地做到这一点?
我想出的一个解决方案是使用
将字符串与数字分开a <- substr(object$column , 1 , 3)
然后用sprintf 粘贴字符串
paste(a ,rep(sprintf("%02d",1:50))
有没有更有效的方法来解决这个问题?
编辑:我的样本中的数字可以超过 10
【问题讨论】:
-
感谢您的回答!如果数字仅达到 9,则该解决方案有效。我再次检查,我的样本的值也超过 10。它们的值类似于 25
-
看起来不太好但是...
paste0(gsub('\\d+', '', v1), sprintf('%02d', as.numeric(gsub('\\D+', '', v1)))) -
这个解决方案似乎适用于我的情况
标签: r