如何有条件地将元素添加到R中的字符开头?

时间:2019-05-24 20:22:41

标签: r loops dataframe conditional

我是编码的新手,正在学习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”

2 个答案:

答案 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")