2017-06-27 42 views
0

当邮政编码的工作,很多时候,在一个CSV文件前面的“0”的就会被放弃即马萨诸塞州有一个‘02111’的地址将被导入状态和截断“ 2111" 。[R导入和导出CSV与ZIP代码接头

Q1:什么是正确的列标题为read.csv保持邮政编码不变?

Q2:什么是出口dataframes并保持邮政编码完好的正确方法?

来源DF:FDIC

library(readr) 
library(dplyr) 
library(tidyr) 

FDIC_1_source <- read_csv("OFFICES2_ALL.CSV") 

NEState<-c("CT", "DC", "DE", "MA", "MD", "ME", "NH", "NJ", "NY", "PA", "RI", "VA", "VT") 

FDIC_2_filtered<-FDIC_1_source[FDIC_1_source$STALP %in% NEState,] 

write.csv(FDIC_2_filtered,file="FDIC_2_filtered.CSV") 

我发现SO最接近的问题是With Dates and Numbers但我不能想办法使用邮政编码的文档。

+0

是否在CSV文件中实际上缺少前导零,或者当您打开CSV文件时,它们会消失,* Excel *注意到特定的错误演员? –

+0

Excel导入时总是删除“0”。尽管该列可以重新分类为“ZIP”,但在保存为csv时不会保存。尽管保存为excel文件时重新分类仍然存在。 CSV非常适合在不同的软件平台上工作。因此需要使用R自动将特定列分类为“ZIP”并将其作为“ZIP”导出为CSV。 –

+0

如果在读取csv后在数据框中删除零,那么尝试在读取csv IE''read_csv(“OFFICES2_ALL.CSV”,col_types =“character”)时指定列类型' –

回答

0

问题可以通过邮政编码包来解决。文档可以找到Here。将用代码更新以反映新发现的库。

library(readr) 
library(dplyr) 
library(tidyr) 
library(zipcode) 

FDIC_1_source <- read_csv("OFFICES2_ALL.CSV") 

NEState<-c("CT", "DC", "DE", "MA", "MD", "ME", "NH", "NJ", "NY", "PA", "RI", "VA", "VT") 

FDIC_2_filtered<-FDIC_1_source[FDIC_1_source$STALP %in% NEState,] 

FDIC_2_filtered$ZIP = clean.zipcodes(FDIC_2_filtered$ZIP) #this will fix any zip code errors, esecially working with North East States 

write.csv(FDIC_2_filtered,file="FDIC_2_filtered.CSV") 

注:Excel是很痛苦的阅读后续CSV文件时。它仍然会截断前面的“0”,但对于所有其他应用程序,库将自动修复邮编问题并导出。请感谢该软件包的作者Jeffrey Breen编写易于使用和优雅的解决方案。

1

如果前导零缺失的源文件英寸这给一个尝试,因为我不知道列名的邮政编码,在这个例子中,我将只使用zip.col作为列名。

FDIC_1_source <- read_csv("OFFICES2_ALL.CSV") 

FDIC_1_source$zip.col <- sapply(FDIC_1_source$zip.col, function(x) paste0(paste0(rep("0",5 - nchar(x)), collapse = ""), x)) 
+0

感谢马特,我明白你写的功能和欣赏时间。 –