2017-06-27 70 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

感謝馬特,我明白你寫的功能和欣賞時間。 –