【发布时间】:2015-07-08 17:50:13
【问题描述】:
在以下示例 hflights 数据中,我想找出每个始发机场和月份的最大和最小 ArrDelays 以及相应的 UniqueCarrier 和 Dest。我让它工作,但我觉得它可以变得更简单。
对于每个 .SD,我可以找到 min(ArrDelay) 和 Max(ArrDelay),但我还需要与 Min 和 Max ArrDelay 对应的 Airline 和 Dest。有没有办法执行该查找?
library(data.table)
library(hflights)
DT <- as.data.table(hflights)
setkey(DT, Origin, Month)
DT[,
c(head(.SD[, .(MaxArrDelay=max(ArrDelay, na.rm = TRUE), Dest) , by=UniqueCarrier][order(-MaxArrDelay)], 1),
head(.SD[, .(MinArrDelay=min(ArrDelay, na.rm = TRUE), Dest) , by=UniqueCarrier][order(MinArrDelay)], 1) )
, by=.(Origin, Month) ]
# Test the output for a single record...
DT[ .("HOU", 1), .(max(na.omit(ArrDelay)), min(na.omit(ArrDelay)))]
【问题讨论】:
-
你试过
which.min,which.max -
你想要的输出是什么?我建议将您的问题减少到更小的问题。另外,@akrun 可能已经回答了这个问题。
-
感谢@akrun 将我指向
which.min和which.max。这些是要使用的功能。我意识到我的示例代码由于回收而产生了不正确的 Dest。 -
你检查过我展示的代码吗
-
是的,效果很好。再次感谢@akrun。
标签: r data.table