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]

しかし、私はあなたの2行の方法がはるかに速いと確信しています.

于 2013-11-08T05:52:00.440 に答える