我有三个数据框:
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中)不会占用不同的长度。所以我不能改变。我怎么能这样做?
答案 0 :(得分:2)
你可以尝试
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)))
或者代替paste0('df', 1:3)
,您可以使用@ {DavidArenburg评论的ls(pattern='df\\d+')