是否可以在对data.table进行分组并选择最小值时从data.table中提取额外的列?
DT <- data.table(events)
firstOrders <- as.data.frame(DT[,min(property_time),by=property_.uid])
在这个例子中,应该提取orderids(这是events-df中的一列),因此在userid-group中时间最小的ordernumber。
答案 0 :(得分:3)
我想我们希望得到min
值为&#39; property_time&#39;的行,按&#39; property_.uid&#39;分组。在这种情况下,我们可以使用which.min
获取数字索引并使用它来对数据集进行子集化(.SD
)。
DT[,.SD[which.min(property_time)],by=property_.uid]
更快的选择是使用.I
获取行索引,然后对数据集
i1 <- DT[,.I[which.min(property_time)],by=property_.uid]$V1
DT1 <- DT[i1]
set.seed(25)
DT <- data.table(property_.uid=rep(1:3, each=3),
property_time=sample(1:15, 9, replace=TRUE), OtherCol=rnorm(9))