我有一个数据框,其中包含一列不同格式的邮政编码: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")))
答案 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:)