代码减去1或2个字符

时间:2014-07-30 16:31:54

标签: r

如果我有一个列表例如:

 Userid    Total
Apple1    12
Apple2    8
Apple3    15
Apple4    3
Apple5    4
Apple6    6
Apple7    20
Apple8    22
Apple9    5
Apple10   11
Orange1   15
Orange2   8

但我想一般计算所有Apple项目,如何从最后减去数字,我有一个代码,如果它是一个数字,但是我不知道当它成为什么时两位数。

我目前正在使用:

substr(userid, 1, nchar(userid)-1)

,这适用于Apple1-9,但Apple10将成为Apple1,任何建议如何做。

2 个答案:

答案 0 :(得分:1)

尝试gsub替换所有数字:

x <- c("Apple10", "Apple3", "Orange123")

gsub("[0-9]", "", x)
#[1] "Apple"  "Apple"  "Orange"

这意味着,检查x的每个元素并替换任何数字。

或者,如果您的数据位于名为df的数据框中:

df$Userid <- gsub("[0-9]", "",df$Userid) 

现在您可以按照自己的意愿进行订购

答案 1 :(得分:0)

使用stringr包和其他方法:

require(stringi)
x <- c("Apple10", "Apple3", "Orange123")
str_replace_all(str = x, pattern =  "\\d{1,3}$", replacement = "")

[1] "Apple"  "Apple"  "Orange"

要替换为“”的模式是字符串末尾的1到3位数。