0

示例代码:

x <- c(10,15,21,24,32,48,56,78,87,98)
y <- c(2,3,4,5,2.1,3.1,1,1.5,1.9,2.6)
df <- data.frame(x,y)
df

抱歉,我对编码比较陌生。昨晚我通过为每 10 个单位段找到最大的 Y 来缩小大型数据框的范围,但事实证明这可能会导致错误。

我很抱歉我对编程还是比较陌生。

所以,我有一个阈值,比如 y > 1.91。给定 X 中 10 个单位的范围,如何找到最大的 Y?所以,我的想法是我会找到 max(y) > threshold 然后删除 10 个单位内的所有 x 行。然后找到第二高的y(必须大于阈值)并删除10个单位内的所有x。我会这样做,直到我列出所有高于阈值且彼此相距至少 10 个单位的值。

你们能帮我编码吗?

4

1 回答 1

1

我不确定我是否理解你的问题。这是你想要做的吗?

require(data.table)
dt <- data.table(df)
threshold <- 1.91
dt <- dt[y>threshold, ]
ans <- dt[0,]

while (nrow(dt)>0){
  ans <- rbindlist(list(ans, dt[which.max(y),]))
  xval <- ans[nrow(ans),x]
  dt <- dt[x<(xval-10)|x>(xval+10)]
}
ans
于 2013-10-15T06:50:13.050 回答