截断/修剪/重新格式化邮政编码

时间:2014-03-20 22:37:31

标签: string r zipcode

我有一个数据框,其中包含一列不同格式的邮政编码:12345,12345-,12345 - 6789,12345-6789和123456789.我只需要前5位数字 - 12345.如何重新格式化/ trim / truncate使它们的格式相同?邮政编码是因素。

df<- data.frame(list(id = c(1:5), zip = c("12345", "12345-", "12345 - 6789", "12345-6789", "123456789")))  

2 个答案:

答案 0 :(得分:2)

无需添加包,strtrim非常适合:

strtrim(df$zip, 5)
## [1] "12345" "12345" "12345" "12345" "12345"

答案 1 :(得分:0)

如果您确定在这五个号码之前没有任何内容,您可以使用stri_sub包中的stringi功能,如下所示:

stri_sub("123456789",1,5)
## [1] "12345"

要仅从字符串向量中提取数字,请使用此包中的另一个函数:

stri_extract_all_charclass("aa  bb12345lfda124\t43","Nd")
## [[1]]
## [1] "12345" "124"   "43"   

此函数提取与class匹配的所有子字符串。在这种情况下&#34; Nd&#34; - 数字数字,但还有更多类,请看doc:)