基于2个唯一标识符添加多个数据帧

时间:2018-11-21 17:49:12

标签: r function dataframe

我有十个数据帧,我想根据id和pnum将它们加起来。做这个的最好方式是什么?谢谢

df1-df1的示例

id pnum v1  v2  v3... v144
111 1   1    0   0 ... 0  
111 2   1    1   0  ...0
121 1   1    1   0  ...0
123 2   1    1   0  ...0
123 1   1    1   0  ...0



df3 -example of df3

id pnum v1  v2  v3... v144
111 1   0    0   0 ... 0  
111 2   0    0   0  ...1
121 1   0    0   0  ...1
123 2   0    0   0  ...0
123 1   0    0   0  ...1

...

df10 -example of df10

id pnum v1  v2  v3... v144
111 1   0    0   0 ... 0  
111 2   0    1   0  ...1
121 1   0    0   1  ...1
123 2   0    1   0  ...0
123 1   0    0   0  ...1

2 个答案:

答案 0 :(得分:0)

我们可以使用listmget中获得数据集,使用bind_rows将数据集行绑定到单个数据集,并按'id','pnum'分组,汇总所有列(summarise_all)返回每个组的sum

library(dplyr)
mget(paste0('df', 1:10)) %>%
   bind_rows %>%
   group_by(id, pnum) %>%
   summarise_all(sum)

答案 1 :(得分:0)

在数据帧列表中考虑rbind,然后运行aggregate

df_list <- list(df1, df2, df3, ..., df10)

master_df <- do.call(rbind, df_list)

agg_df <- aggregate(. ~ ID + pnum, master_df, sum)