R - 在每个列单元格中的最后两位数之前分割字符串

时间:2015-11-06 21:58:20

标签: regex r split

我在一列中有一个带有用户名的csv,后面是每个用户的反馈评级,满分为100。

E.g。 James89

我希望找到一种方法来分割名称和评级,例如:通过使用正则表达式在最后两位数之前插入逗号。这可能吗?和/或有更好的方法吗?

df1 = data.frame(Product = c(rep("ARCH78"), rep("AUSFUNGUY91"), rep("AddiesAndXans96"), rep("AfroBro79")))

上面的代码是我正在处理的数据的一小部分。我希望得到这个输出:

ARCH    78
AUSFUNGUY    91
AddiesAndXans    96
AfroBro    79

我尝试过这段代码(灵感来自this回答:

df1$P2 <- gsub("(.*?)(..)", "\\1", df1$Product)

它似乎有效,但输出有问题:

ARCH78  AR
AUSFUNGUY91 AUUNY
AddiesAndXans96 AdesdXs
AfroBro79   AfBr9

1 个答案:

答案 0 :(得分:1)

至于以下内容:

  

我希望找到一种方法来分割名称和评级,例如:通过使用正则表达式在最后两位数之前插入逗号。

您只需

即可实现
df1 = data.frame(Product = c(rep("ARCH78"), rep("AUSFUNGUY91"), rep("AddiesAndXans96"), rep("AfroBro79")))
gsub("(\\d{2})$",",\\1",df1$Product)
## => [1] "ARCH,78"          "AUSFUNGUY,91"     "AddiesAndXans,96" "AfroBro,79"  

请参阅IDEONE demo

您可以进一步将具有反向引用",\\1"的替换\1调整为最后2位数。