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

问题描述 投票:2回答:1

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

我想从一个组织成组的较大数据帧中减去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
r dataframe vector
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.