2013-04-04 233 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')