按组对data.frame执行基于矢量的操作

时间:2017-12-18 15:59:09

标签: r dataframe vector

我在这里已经看到了一些相当类似的问题,然而,我的大脑在实现将我直接阅读的内容应用到我的数据方面遇到了一些麻烦。

我想从一个组织成组的较大数据框中减去data.frame中包含的向量。在这种情况下,我有一个标准参考(dfRef),我想从几个重复的实验测量值(dfMeasured)中减去以得到差异的数据帧(dfDelta)。

数据的组织如下:

dfRef
# input output
# 0     4
# 1     7
# 2     8
# 3     1

dfMeasured
# input output group
#  0      4      A
#  1      5      A
#  2      9      A
#  3      1      A
#  0      2      B
#  1      3      B
#  2      5      B
#  3      8      B
#  0      1      C
#  1      4      C
#  2      2      C
#  3      9      C

我希望我的输出类似于:

dfDelta
# input output group
#  0      0      A
#  1      -2     A
#  2      1      A
#  3      0      A
#  0      -2     B
#  1      -4     B
#  2      -3     B
#  3      7      B
#  0      -3     C
#  1      -3     C
#  2      -6     C
#  3      8      C

1 个答案:

答案 0 :(得分:2)

一种方法是加入on'input',然后将值赋给'output

library(data.table)
setDT(dfMeasured)[dfRef, output := output - i.output,on = .(input)]
dfMeasured
#    input output group
# 1:     0      0     A
# 2:     1     -2     A
# 3:     2      1     A
# 4:     3      0     A
# 5:     0     -2     B
# 6:     1     -4     B
# 7:     2     -3     B
# 8:     3      7     B
# 9:     0     -3     C
#10:     1     -3     C
#11:     2     -6     C
#12:     3      8     C