我有一个像这样的数据集(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)]
但我不知道如何在两个逗号之前编写该部分。有人能帮助我吗?
答案 0 :(得分:1)
使用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
答案 1 :(得分:1)
你可以这样做:
DT [, list(growth = OD[time == 1] - OD[time == 0]), by=.(Iso,conc.,rep)]
或者,如果您确定每组中只有两个值:
DT [order(time), list(growth = diff(OD), by=.(Iso,conc.,rep)]