我有一个大型数据框,其中包含不同参数的实验。每个参数组合都有几个执行:
PROFILE TIME NTHREADS PARAM1 PARAM2 PARAM3
prof1 3.01 1 4 10 1
prof1 2.90 1 4 10 1
prof1 3.02 1 4 10 1
prof1 1.52 1 4 10 2
prof1 1.60 1 4 10 2
...
我正在使用聚合来获得每个配置文件和组合的最佳时间。来确定nthreads:
data_aggregated <- aggregate(data$TIME,
by = list(PROFILE = data$PROFILE,
NTHREADS = data$NTHREADS),
FUN = min)
返回一个像这样的新数据框:
PROFILE NTHREADS TIME
prof1 1 1.52
prof1 2 0.9
prof2 1 1.41
prof2 2 0.88
...
我想要的是在每种情况下获得聚合行的PARAM1,PARAM2,PARAM3 的值(具有最小时间的那个)。现在,我在第一个数据帧中查找PROFILE,TIME和NTHREADS等于第二个数据帧中的行,但是可能有更简单的方法吗?
答案 0 :(得分:2)
或者,使用dplyr
:
library(dplyr)
dat <- dat %>%
group_by(PROFILE, NTHREADS) %>%
filter(TIME == min(TIME))
答案 1 :(得分:0)
最后,我完成了Ronak Shah的评论。 Iff两个数据框共享列名称和值(因为使用MIN而不是MEAN聚合),最简单的解决方案是:
data_aggr <- merge(data_aggr, data)
答案 2 :(得分:0)
考虑[class*="shops__item"] {
background: black;
}
,这是在不同级别的因素之间进行汇总的方法。您可以将多个分组作为单独的参数传递:
const destroyer = (arr, ...args) => arr.filter(value => args.indexOf(value) === -1);
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3);