【问题标题】:Mutate dataframes by matching ids in r [duplicate]通过匹配 r [重复] 中的 id 来改变数据帧
【发布时间】:2015-05-12 06:28:16
【问题描述】:

我有三个数据框:

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 中)不会采用不同的长度。所以我不能变异。我该怎么做?

【问题讨论】:

    标签: r plyr dplyr mutated


    【解决方案1】:

    你可以试试

      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)))
    

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

    【讨论】:

    • 谢谢! @akrun。我之前不知道'reduce'功能:)
    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2020-12-25
    • 2021-12-29
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多