2016-10-19 52 views
-3

我有不同長度的有以下兩個變量的數據幀:增加值從DF較長DF

DF1:州,縣,收入,年齡

DF2(較長的一個):郵編。代碼,州,郡

因此,df1對州&縣的每個組合都有一個唯一的條目,df2可以有幾個用於不同郵政編碼的條目。

我試圖將收入和年齡從df1分配給df2中的每一行(Zip.Code)。 我已經試過:

dplyr:: left_join(df2, df1, by=c("STATE", "COUNTY")) 

df2$Income <- NA 
df2$Age <- NA 

for (i in 1:length(df2$Zip.Code)){ 
    for (j in 1:length(df1$STATE)){ 
if (df2$STATE[i]== df1$STATE[j] & df2$COUNTY[i]== df1$COUNTY[j]){ 
df2$Age[i] <- df1$Age[j] 
df2$Income[i] <- df1$Income[j] 
} 
}} 

這樣做的結果是NA所有的收入和年齡。

更新:問題是寫狀態的不同方式。謝謝您的幫助。

+1

'dplyr :: left_join(DF2,DF1,通過= C( 「縣」, 「國家」))'。 – tchakravarty

+2

也檢查'合併'功能。 – lmo

+0

應該提到它 - left_join得到了同樣的結果(NA) –

回答

0

使用合併:

merge(df1,df2, by=c("County","State"))