2

我正在尝试使用data.table. 首先,我想按板找到特定类型样品的每个浓度的中值,然后我想找到每个板的中值的最大值。

library(data.table)

set.seed(1)
DT <- data.table(plate = rep(paste0("plate",1:3),each=11),
                 type = rep(c(rep(1,9),2,2),3),
                 value = sample(1:25,33,replace=TRUE),
                 conc = rep(c(rep(1:3,each=3),4,4),3)
                 )

我得到了以下工作:

DT[,med := median(value[type==1]),by=list(plate,conc)]
DT[,max := max(med,na.rm=TRUE),by=plate]

是否可以在不添加中间med列的情况下进行多步聚合?

4

1 回答 1

3

例如,您可以执行以下操作:

DT[, max := max(.SD[, median(value[type == 1]), by = conc]$V1, na.rm = T),
     by = plate]

但我很确定你的两线方式要快得多。

于 2013-11-08T05:52:00.440 回答