在R中保留一个包含字母和数字的字符串的最后9个数字。

5
请R-gurus,我如何保留字母数字字符串的最后9个数字,例如
LA XAN 000262999444 RA XAN 000263000507 WA XAN 000263268038 SA XAN 000263000464 000263000463 000263000476
我只想得到
262999444 263000507 263268038 263000464 263000463 263000476
非常感谢。
4个回答

7
stringr 中很容易实现,因为sub_str 将负索引解释为从字符串末尾的偏移量。
library(stringr)
str_sub(xx, -9, -1)

5
如果你只需要最后的9个位置,你可以使用substr函数:
substr(xx,nchar(xx) - 8,nchar(xx))

假设您的字符向量存储在xx中。此外,正如下面的Hadley所指出的那样,如果xx是因子而不是字符向量,nchar将返回意外结果。他使用stringr的解决方案绝对更可取。

但要小心,你的“字符串”实际上不是一个因子,否则你会得到非常令人惊讶的结果。 - hadley

2
假设输入是一个名为“strgs”的向量:
sub(".*(.........)$", "\\1", strgs)
#[1] "262999444" "263000507" "263268038" "263000464"

?sub
?regex

如果单元格仅包含9个数字,则似乎无法正常工作。请确认。 - nolyugo
+1 但是第一个句点后面的修饰符应该是*,即.*-这将返回0个或多个匹配项。 - Andrie

-3

其实不太确定你想要哪种语言,但这里是一个C#的实现。

逻辑大致如下:

    string s = "WA XAN 000263268038";
    s = s.Substring(s.Length - 10, 9);

希望这能帮到你!


这个能在R中执行吗?谢谢。 - nolyugo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接