我是编码的新手,正在学习R的基础知识。我有一个在Excel中制作的数据集。它们是邮政编码;但是,导出时会自动删除以0开头的邮政编码。我试图遍历并将0加回来。
我的想法是,假设不带零的邮政编码长度为4个字符,我只是找到了长度为4的迭代,然后在前面添加了0,但是我没有得到正确的答案。
zip<-c(61415, 19087, 63122, 3104, 1938)
zip<-as.character(zip)
>for(i in zip){
+
+if(nchar(i)==4){
+ paste0("0",i)
+ }
+ }
NULL
我应该得到:
“ 61415”,“ 19087”,“ 63122”,“ 03104”,“ 01938”
答案 0 :(得分:0)
可以通过使用vector
格式化数字sprintf
sprintf("%05d", zip)
#[1] "61415" "19087" "63122" "03104" "01938"
另一个选项是str_pad
library(stringr)
str_pad(zip, pad = "0", width = 5)
#[1] "61415" "19087" "63122" "03104" "01938"
注意:这两个选项都不需要任何循环或任何条件语句
zip <- c(61415, 19087, 63122, 3104, 1938)
答案 1 :(得分:0)
在“ zip”是字符串的情况下,您也可以尝试:
ifelse(nchar(zip) != 5, paste0("0", zip), zip)
[1] "61415" "19087" "63122" "03104" "01938"
在“ zip”是数字矢量的情况下:
formatC(zip, width = 5, format = "d", flag = "0")