向格式错误的邮政编码添加前导零
Add leading zero to badly formatted ZIP code
编辑:我刚刚查看了文件中的更多邮政编码,了解到它是一个 前导 零,这些代码丢失了。
我有一堆格式如下的邮政编码:
zip
8974
8974
4350
4350
7623
55111
98769
如您所见,由于格式问题,这些缺少最后一个 0
以满足 5 位邮政编码要求。
我正在尝试这样做:
attach(dat)
for(x in zip){
if(nchar(x) < 5){
x <- x*10
}
}
我也试过这个:
for(x in zip){
if(nchar(x) < 5){
zip[x] <- x*10
}
}
但都没有产生预期的结果。如何在 R 中向这些邮政编码添加零?
sapply(zip, function(x){if(nchar(x)<5){paste0(x,0)}else{x}})
#zip = a vector
这应该有效。这将在长度小于 5 个字符的所有内容上放置一个尾随“0”。如果要放置前导 0,请改用 paste0(0,x)
。
输出将是一个字符串向量。
您确定他们缺少 final 0,而不是 initial 0?数字中的最后一个零是有意义的,而前导零不会改变数字的值,并且会被 R 删除。
我建议将数据转换为字符或因数,然后使用一个函数将零添加到那些小于 10000 的邮政编码(因此只有四位数,而不是所需的五位数)。它看起来像这样:
zip <- c(8974, 8974, 4350, 4350, 7623, 55111, 87969)
zip <- as.character(zip)
for(i in 1:length(zip)){
if(as.numeric(zip[i]) < 10000){
zip[i] <- paste0("0", zip[i])
}
}
zip
无论哪种方式,您都不需要将邮政编码保留为数值,因为您不应该对它们进行数学运算。它们只是地理标签,因此将它们作为字符或因素应该不会造成任何问题。
编辑:我刚刚查看了文件中的更多邮政编码,了解到它是一个 前导 零,这些代码丢失了。
我有一堆格式如下的邮政编码:
zip
8974
8974
4350
4350
7623
55111
98769
如您所见,由于格式问题,这些缺少最后一个 0
以满足 5 位邮政编码要求。
我正在尝试这样做:
attach(dat)
for(x in zip){
if(nchar(x) < 5){
x <- x*10
}
}
我也试过这个:
for(x in zip){
if(nchar(x) < 5){
zip[x] <- x*10
}
}
但都没有产生预期的结果。如何在 R 中向这些邮政编码添加零?
sapply(zip, function(x){if(nchar(x)<5){paste0(x,0)}else{x}})
#zip = a vector
这应该有效。这将在长度小于 5 个字符的所有内容上放置一个尾随“0”。如果要放置前导 0,请改用 paste0(0,x)
。
输出将是一个字符串向量。
您确定他们缺少 final 0,而不是 initial 0?数字中的最后一个零是有意义的,而前导零不会改变数字的值,并且会被 R 删除。
我建议将数据转换为字符或因数,然后使用一个函数将零添加到那些小于 10000 的邮政编码(因此只有四位数,而不是所需的五位数)。它看起来像这样:
zip <- c(8974, 8974, 4350, 4350, 7623, 55111, 87969)
zip <- as.character(zip)
for(i in 1:length(zip)){
if(as.numeric(zip[i]) < 10000){
zip[i] <- paste0("0", zip[i])
}
}
zip
无论哪种方式,您都不需要将邮政编码保留为数值,因为您不应该对它们进行数学运算。它们只是地理标签,因此将它们作为字符或因素应该不会造成任何问题。