根据数字位置拆分数字
Splitting numbers according to digit position
我正在尝试创建一个 new
变量,它将存储 tx
每个数字的第 2、3、4 和最后三位数字。例如 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))
但输出不理想。
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, 2, 4), substring(tx, nchar(tx) - 2)))
我正在尝试创建一个 new
变量,它将存储 tx
每个数字的第 2、3、4 和最后三位数字。例如 tx
中的第一个数字在 new
我做到了
tx<-c(4812129004534500, 6430650557835, 579900098554, 382183224511777, 49057595473648551, 64951444098766, 649544543781, 87567909876421)
new <- sapply(tx, function(x) substring(x, first=c(2,3,4), last=3))
但输出不理想。
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, 2, 4), substring(tx, nchar(tx) - 2)))