1

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

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

  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]
    }    
  }
}
4

2 回答 2

2

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

merge(wiki.template.count, wiki.lang.codes.size, by = 'language')
于 2013-04-04T05:15:42.947 回答
1

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

假设您有 2 个数据框df1,并且df2都有列,language这应该可以工作

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

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

df_merge <- merge(df2, df1, by = 'language')
于 2013-04-04T05:19:23.370 回答