如何计算基于多个变量的值?

How to calculate a value basing on several variables?

我有一个这样的数据集 (df):

Iso conc.   rep time    OD
1   1      1    0     0.2
1   1.5    2    0     0.2
1   2      3    0     0.2
2   1      1    0     0.3
2   1.5    2    0     0.25
2   2      3    0     0.3
1   1      1    1     0.4
1   1.5    2    1     0.35
1   2      3    1     0.38
2   1      1    1     0.4
2   1.5    2    1     0.45
2   2      3    1     0.43

我想根据 Iso、conc 和 rep.

得到结果 growth=OD(time=1)-OD(time=0)

输出将是这样的:

Iso conc.   rep time    growth
1   1      1    1      0.2
1   1.5    2    1      0.15
1   2      3    1      0.18
2   1      1    1      0.1
2   1.5    2    1      0.2
2   2      3    1      0.13

一直想用data.table来计算增长。

DT <- as.data.table(df)
DT[, , by = .(Iso,conc.,rep,set)]

但是我不知道两个逗号前的部分怎么写。有人可以帮助我吗?

使用data.table你可以简单地做:

dt[,.(growth = OD[time==1]-OD[time==0]),.(Iso,conc.,rep)]
#   Iso conc. rep growth
#1:   1   1.0   1   0.20
#2:   1   1.5   2   0.15
#3:   1   2.0   3   0.18
#4:   2   1.0   1   0.10
#5:   2   1.5   2   0.20
#6:   2   2.0   3   0.13

您可以使用:

DT [, list(growth = OD[time == 1] - OD[time == 0]), by=.(Iso,conc.,rep)]

或者,如果您确定每组中只有两个值:

DT [order(time), list(growth = diff(OD), by=.(Iso,conc.,rep)]