是否有用于将“草率”字符串转换为可以订购的字符串的包?

时间:2018-03-16 08:50:35

标签: r

我使用带有'sloppy'字符串的大型df,其中包含字符,数字和标点字符,如下所示:

cnames <- c("X1_1", "X1_12", "X1_9", X11_9, "X4_112", "X4_2")

R无法正确排序这些字符串,因为缺少必需的“前置零”。

我使用正则表达式将其转换为:

"X01_01", "X01_12", "X01_09", X11_09, "X04_12", "X04_02"

这需要相当多的编程(在RegEx上有点生锈)!

我想我不是唯一一个面临这个问题的人,所以我想知道:

是否有包裹:

  • 自动检测“模式”代码的哪些部分由数字组成
  • 检测每个部分的最大长度
  • 填写必须在每个数字
  • 之前放置的正确数量的零
  • 以可逻辑排序的格式返回字符串

如果它不存在,也许我找到一个很好的案例来编写一个包。

1 个答案:

答案 0 :(得分:1)

要转换你的角色,你可以这样做:

cnames <- c("X1_1", "X1_12", "X1_9", "X11_9", "X4_112", "X4_2")
d <- read.table(text=sub("^X", "", cnames), sep="_")
sprintf("X%02d_%03d", d$V1, d$V2)
# > sprintf("X%02d_%03d", d$V1, d$V2)
# [1] "X01_001" "X01_012" "X01_009" "X11_009" "X04_112" "X04_002"