2013-04-04 225 views
1

我有一個數據框與兩列(語言,文章)作爲列標題,然後我有另一個數據框列標題是語言和計數。R通過比較兩個數據幀列插入一行

我想迭代第一個數據幀,並且如果第一個數據幀的語言列中的值與第二個數據幀中的語言列的值相匹配。我想要將文章列的值插入第二個數據框。

language articles 
1  en 4200596 
2  de 1571581 
3  fr 1369891 
4  nl 1405514 
5  it 1020971 
6  es 981124 

    language count numArticles 
1  gv 86   NA 
2  sco  3   NA 
3  zea 19   NA 
4  szl  0   NA 
5  pnb  2   NA 
6  cdo 28   NA 

我完成它寫一個循環,但我敢肯定這是不是做的最好的辦法,也可以存在於乾淨多了這樣做的[R方式和更快的方法:

for(i in 1:numberOfElements) { 
    for(k in 1:numberOfElements) { 
    if (as.character(wiki.template.count$language[i]) == as.character(wiki.lang.codes.size$language[k])) { 
     wiki.template.count$numArticles[i] <- wiki.lang.codes.size$articles[k] 
    }  
    } 
} 

回答

2

您正試圖合併兩個data.frames。使用merge

merge(wiki.template.count, wiki.lang.codes.size, by = 'language') 
+0

是的,但語言數據列不是相同的順序,我的意思是dataframe1的順序不匹配dataframe2 – 2013-04-04 05:18:24

+1

@ Null-Hypothesis - 這將創建一個新的data.frame,您可能需要設置'all = TRUE' (或某種變體)t o獲得你想要的加入方式。它會照顧你的訂單。 – mnel 2013-04-04 05:22:12

+0

如果我想按新列排序,我可以在同一時間嗎? – 2013-04-04 05:26:14

1

如果列名相同,則可以使用merge

假設你有2個數據幀df1df2都與language列這應該工作

df_merge <- merge(df1, df2, by = 'language') 

,如果你想保留DF2的順序,而不是DF1然後切換他們在合併

df_merge <- merge(df2, df1, by = 'language')