【发布时间】:2018-12-08 20:27:49
【问题描述】:
我的问题与Subset by group with data.table 有关但不同。
想象一个这样的数据集:
tmp <- data.table(x = 1:10, y = c(27, 70, 54, 18, 50, 44, 22, 73, 6, 5))
对于数据的每一行,我想计算一个新值 z,它是 x 值较大的所有行的 min(y)。例如,对于 x 为 3 的数据的第三行,我希望在 x > 3 的行中min(y)(这将是值 5)。出于我们的意图和目的,您可以假设数据已按 x 排序。
一开始我想用这样的函数:
min.y <- function(val, dt) {
dt[x > val, min(y)]
}
但是调用tmp[, z:= fun(x, tmp)]会产生警告信息:
In min(y) : no non-missing arguments to min; returning Inf
这样做的正确方法是什么?
PS:显然,对于最后一行,我希望得到 NA 作为结果
【问题讨论】:
标签: r data.table