首页 > 解决方案 > 从通过重复标点字符连接的字符串的列中提取数字

问题描述

我有一列具有这样的值:

string.b.string.1.
string.b.string.2.
string.b.string.3.
string.b.string.10.
string.b.string.300.

依此类推,编号从 0 到 300

我需要从该列中提取并删除数字并将其放在另一列中,从而产生如下输出:

"Id"          "Variable"   
1             string.b.string
2             string.b.string
3             string.b.string
10            string.b.string
300           string.b.string

到目前为止,我对 gsub() 或 readr::parse_number() 的所有尝试都失败了,因为我只是没有得到这些 gsub() 函数的语法。我通常失败了,因为“。” 在变量中重复...

非常感谢任何帮助,谢谢!

标签: rgsub

解决方案


您可以使用tidyr::extract

tidyr::extract(df, V1, c('Variable', 'Id'), '(.*?)(\\d+)', convert = TRUE) 

#          Variable  Id
#1 string.b.string.   1
#2 string.b.string.   2
#3 string.b.string.   3
#4 string.b.string.  10
#5 string.b.string. 300

数据

df <- structure(list(V1 = c("string.b.string.1.", "string.b.string.2.", 
"string.b.string.3.", "string.b.string.10.", "string.b.string.300."
)), class = "data.frame", row.names = c(NA, -5L))

推荐阅读