解析 R 数据帧中的字符串字段对我来说恐怕有点神秘......将不胜感激。
我有一个字符串字段,它总是以不确定数量的数字字符结尾。我想写一些代码来提取每个末尾的数字部分。
数据格式的一个示例是:
df_test <- data.frame(my_string = c("XXX-0387", "XXXX-1-999999", "XXX 12345432", "XXX-2345", "XXX1234"))
我想要的是将末尾的数字部分放入一个新字段中,但保留任何前导零 - 所以大概新字段必须是 chr 而不是 int。所以我的输出看起来像:
c("0387", "999999", "12345432", "2345", "1234)
请问有没有简单的方法可以做到这一点?
谢谢。
一种使用sub
捕获字符串的最后一部分(即数字(的方法。
sub('.*?(\d+)$', '\1', df_test$my_string)
#[1] "0387" "999999" "12345432" "2345" "1234"
使用stringr
:
stringr::str_extract(df_test$my_string, '\d+$')
您可以将regexpr
与\d+$
一起使用,以查找末尾的数字并用regmatches
提取。
regmatches(df_test$my_string, regexpr("\d+$", df_test$my_string))
#[1] "0387" "999999" "12345432" "2345" "1234"
我们可以使用stringi
中的stri_extract_last
library(stringi)
stri_extract_last(df_test$my_string, regex = "\d+")
#[1] "0387" "999999" "12345432" "2345" "1234"