示例代码:
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 的数据框。
示例代码:
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 的数据框。
如果您只是连续寻找每 10 个 y 值的 y 最大值,那么您可以在下面使用。
innerlapply
创建一个索引列表1:10
,11:20
等等21:30
。外部将获取这些索引并从这些索引lapply
中获取最大值y
lapply(lapply(0:4, function(i) 1:10+ 10*i), function(vec) {max(y[vec])})
我会%/%
用来创建组,然后使用aggregate
. 我已将您df
的 a转换matrix
为data.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