【发布时间】:2021-06-06 16:27:56
【问题描述】:
我有一个分组变量“grps”和一个值“x”的数据。我已经计算了每组“cmx”中的cummax。现在我需要找到每个组中“x”的第二个最高累积值,scmx。
一些数据,包括想要的列scmx:
library(data.table)
d = structure(list(date = structure(rep(c(18690, 18691, 18692, 18693, 18694, 18695, 18696, 18697), 2), class = "Date"),
x = c(18, 70, 57, 94, 94, 13, 98, 23, 20, 72, 59, 96, 96, 15, 100, 25),
grps = c(rep("g1", 8), rep("g2", 8))),
row.names = c(NA, -16L), class = c("data.table", "data.frame"))
d[, cmx := cummax(x), by = .(grps)]
d[, scmx := c(18, 18, 57, 70, 70, 70, 94, 94, 20, 20, 59, 72, 72, 72, 96, 96)]
上下文
如果x 对应于绩效评级,我要做的是找出他们取得最佳绩效和第二好的日期。我的一个类似问题,我需要找到对应于列中最高累积值的行:
Fill down first row within each cumulative max, with a twist
【问题讨论】:
-
@Henrik 谢谢我没看到那个。我希望有一个
data.table类型的解决方案
标签: r data.table