如何计算基于多个变量的值?
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)]
我有一个这样的数据集 (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)]