aggregate:如何计算blockwise最大*和*检索一些关于最大值的附加信息?

时间:2013-11-05 10:18:54

标签: r

我有一个包含三条信息的数据集:时间,类型,价值。对于每一个 时间点,我想知道最大值(见(*)),还有 相应类型的最大值。我知道如何使用聚合来获得 每个时间点的最大值,但如何获得相应的类型?

x <- data.frame(time=c(rep(1:2, 2), rep(2:1, 2)), type=LETTERS[1:4], value=1:8)
aggregate(value ~ time, data=x, FUN=max) # (*) ... but what is the corresponding type?

如果可能,我正在寻找基于aggregate()tapply()之类的解决方案(不需要额外的套餐)。

1 个答案:

答案 0 :(得分:2)

merge应该可以为您处理:

merge(x, aggregate(value ~ time, data=x, FUN=max))
#   time value type
# 1    1     8    D
# 2    2     7    C