R通过比较两个数据帧列插入一行

时间:2013-04-04 05:06:28

标签: r dataframe

我有一个数据框,其中两列(语言,文章)作为列标题,然后我有另一个数据框,列标题是语言和计数。

我想迭代第一个数据帧,如果第一个数据帧的语言列中的值与第二个数据帧中的语言列的值匹配。我想将articles列的值插入第二个数据帧。

  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 个答案:

答案 0 :(得分:2)

您正在尝试合并两个data.frames。使用merge

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

答案 1 :(得分:1)

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

假设您有2个数据框df1df2,并且列language这应该可以使用

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

如果你想保留df2而不是df1的顺序,那么在合并中切换它们

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