聚合两个数据帧的类似名称列并创建新的数据帧

时间:2017-01-25 10:45:41

标签: r

这可能是重复,但我并没有真正找到任何具体的帖子。

我有两个数据帧" df"和" nm"。它们具有相同的行和列,列名也相同。

df
User    Apple   Cherry  Kiwi    Lemon
A       208      71     129     58
B       81       69     142     53
C       164      212    175     200
D       125      73     51      214
E       205      123    46      75
F       53      215     40      38

nm
User    Lemon   Cherry  Apple   Kiwi
A        161     57      27      38
B        26      153     57      45
C        39      153     219     86
D        47      155     139     61
E       143      40      59     130
F       183      77      71     133

请注意,类似列名的列索引不相同。

我想创建新的数据框" kl"我想要的总价值是"用户"对于每个列名,即

kl
User    Apple   Cherry  Kiwi    Lemon
A       117.5    64     83.5    109.5
B       69       111    93.5    39.5
C       191.5    182.5  130.5   119.5
D       132      114    56      130.5
E       132      81.5   88      109
F        62      146    86.5    110.5

1 个答案:

答案 0 :(得分:3)

您可以尝试aggregate,2 rbind - 编辑data.frames,首先对列进行重新排序,以便它们在data.frame s中的顺序相同:

aggregate(.~User, data=rbind(df, nm[, match(colnames(df), colnames(nm))]), FUN=mean)
#  User Apple Cherry  Kiwi Lemon
#1    A 117.5   64.0  83.5 109.5
#2    B  69.0  111.0  93.5  39.5
#3    C 191.5  182.5 130.5 119.5
#4    D 132.0  114.0  56.0 130.5
#5    E 132.0   81.5  88.0 109.0
#6    F  62.0  146.0  86.5 110.5