通过匹配 r 中的 id 来改变数据帧

Mutate dataframes by matching ids in r

我有三个数据框:

df1:

id score1
1   50
2   23
3   40
4   68
5   82
6   38

df2:

id score2
1   33
2   23
4   64
5   12
6   32

df3:

id score3
1   50
2   23
3   40
4   68
5   82

我想将三个分数变异成这样的数据框,使用 NA 表示缺失值

id score1 score2 score3
1   50     33     50
2   23     23     23
3   40     NA     40
4   68     64     68
5   82     12     82
6   38     32     NA

或者像这样,删除 NA 值:

id score1 score2 score3
1   50     33     50
2   23     23     23
4   68     64     68
5   82     12     82

但是,mutate(在 dplyer 中)不会采用不同的长度。所以我不能变异。我该怎么做?

你可以试试

  Reduce(function(...) merge(..., by='id'), list(df1, df2, df3))
  #   id score1 score2 score3
  #1  1     50     33     50
  #2  2     23     23     23
  #3  4     68     64     68
  #4  5     82     12     82

如果您有许多数据集对象名称的模式为 'df' 后跟数字

  Reduce(function(...) merge(..., by='id'), mget(paste0('df',1:3)))

或者您可以使用 ls(pattern='df\d+') 而不是 paste0('df', 1:3),正如@DavidArenburg

所评论的那样