根据数字位置分割数字

我正在尝试创建一个new变量,该变量将存储tx的每个数字的第二,第三和第四以及最后三位数字。例如,tx中的第一个数字将是new

中的812500

我做到了

tx<-c(4812129004534500,6430650557835,579900098554,382183224511777,49057595473648551,64951444098766,649544543781,87567909876421)
new <- sapply(tx,function(x) substring(x,first=c(2,3,4),last=3))

但输出不理想。

yzp0754 回答:根据数字位置分割数字

gsub()(具有下面的正则表达式模式)将起作用。

做什么:

它将()-大括号之间的部分选择为组。
 -第一组是数字2、3和4
 -第二组是最后三位数字
然后将所有内容替换为group1 + group2

gsub( "^\\d(\\d{3}).*(\\d{3}$)","\\1\\2",tx )
[1] "812500" "430835" "799554" "821777" "905552" "495766" "495781" "756421"
,

尝试

as.numeric(paste0(substr(tx,2,4),substr(tx,(nchar(tx)-2),nchar(tx))))
#[1] 812500 430835 799554 821777 905552 495766 495781 756421

上面的一种变化可以是(由@ jay.sf指出),

as.numeric(paste0(substr(tx,substring(tx,nchar(tx) - 2)))
本文链接:https://www.f2er.com/3146585.html

大家都在问