从超过一定长度的数字中删除最后一位数字

Val*_*ie 4 r maxlength gsub

我有一个邮政编码矢量,包括五位和九位数代码.我想从长度超过5的代码中删除结束数字.

例如,以下代码:

zip<-c(11566, 46235, 50467, 856073217, 97333, 856159229)
Run Code Online (Sandbox Code Playgroud)

应该成为

zip
11566
46235
50467
85607
97333
85615
Run Code Online (Sandbox Code Playgroud)

我在想gsub是解决这个问题的好方法,但我无法弄清楚如何为它编写代码.我试过这个,但它肯定不起作用.

df$zip<- gsub("\\d(!i:5)", "", as.character(df$zip))
Run Code Online (Sandbox Code Playgroud)

Ram*_*h K 10

这应该工作

zip<-c(11566, 46235, 50467, 856073217, 97333, 856159229)

> s <- substr(zip,1,5)
> s
[1] "11566" "46235" "50467" "85607" "97333" "85615"

> as.numeric(s)
[1] 11566 46235 50467 85607 97333 85615
> 
Run Code Online (Sandbox Code Playgroud)

  • 是的,正则表达式对此任务来说太过分了. (3认同)