在R中使用随机数字/字符提取/删除整数或字符串的部分

时间:2014-03-07 17:14:54

标签: r substr

说我有一个整数

x <- as.integer(442009)

或字符串

y <- "a10ba3m1"

如何消除一般任意长度的整数/字符串的最后两位数/字符?

2 个答案:

答案 0 :(得分:6)

substr返回子字符串:

substr(x, 1, nchar(x)-2)
# [1] "4420"
substr(y, 1, nchar(y)-2)
# [1] "a10ba3"

答案 1 :(得分:4)

如果您知道该值是一个整数,那么您可以除以100并转换回整数(删除小数部分)。这可能比将其转换为字符串然后回来更有效。

> x <- as.integer(442009)
> floor(x/100)
[1] 4420

如果您只想删除字符串的最后2个字符,那么substr可以正常工作。

或者,这里也是一个正则表达式(效率低于substr

> y <- "a10ba3m1"
> sub("..$", "", y)
[1] "a10ba3"

如果你想从字符串中删除最后2位数字(不是任何字符),并且最后2位数不能保证在最后2位,那么这是一个有效的正则表达式:

> sub("[0-9]?([^0-9]*)[0-9]([^0-9]*)$", "\\1\\2", y)
[1] "a10bam"

如果你想删除最后出现的最多2位数字(但如果有任何非数字后面没有,那么请使用这个正则表达式:

> sub("[0-9]{1,2}$", "", y)
[1] "a10ba3m"