0

示例代码:

rander <- seq(1, 26000, 45.7)
y <- sample(rander, 50)
x <- seq(1, 50, 1)
df <- cbind(x, y)
df

我将如何确定每 10 个 x 单位的 y 的最大值?所以我想找到 (for x[1-10], max(y)) 。

编辑:我想为 x 的 5 10 个单位段中的每一个提供一个最大 5 y 的数据框。

4

2 回答 2

1

如果您只是连续寻找每 10 个 y 值的 y 最大值,那么您可以在下面使用。

innerlapply创建一个索引列表1:1011:20等等21:30。外部将获取这些索引并从这些索引lapply中获取最大值y

lapply(lapply(0:4, function(i) 1:10+ 10*i), function(vec) {max(y[vec])})
于 2013-10-14T04:13:30.657 回答
1

我会%/%用来创建组,然后使用aggregate. 我已将您df的 a转换matrixdata.frame第一个(我set.seed(1)在生成示例数据时使用过,以防其他人想尝试复制它:

df <- data.frame(df)
df$group <- 0:(nrow(df)-1) %/% 10
aggregate(y ~ group, df, max)
#   group       y
# 1     0 24267.7
# 2     1 25318.8
# 3     2 23445.1
# 4     3 24953.2
# 5     4 19834.8

或者,您可能需要考虑cut

df$intervals <- cut(df$x, seq(0, max(df$x), 10))
aggregate(y ~ intervals, df, max)
#   intervals       y
# 1    (0,10] 24267.7
# 2   (10,20] 25318.8
# 3   (20,30] 23445.1
# 4   (30,40] 24953.2
# 5   (40,50] 19834.8
于 2013-10-14T04:13:41.817 回答