示例代码:确定最大值为y为给定范围内沿x
rander <- seq(1, 26000, 45.7)
y <- sample(rander, 50)
x <- seq(1, 50, 1)
df <- cbind(x, y)
df
我将如何去识别每个10个单位x的y的最大值?所以我想找到(对于x [1-10],max(y))。
编辑: 我想结束每个x 10 10单位段的最大5 y的数据框。
示例代码:确定最大值为y为给定范围内沿x
rander <- seq(1, 26000, 45.7)
y <- sample(rander, 50)
x <- seq(1, 50, 1)
df <- cbind(x, y)
df
我将如何去识别每个10个单位x的y的最大值?所以我想找到(对于x [1-10],max(y))。
编辑: 我想结束每个x 10 10单位段的最大5 y的数据框。
得到y
最大值我会用%/%
创建组,然后使用aggregate
。我已经转换您的df
从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
如果您只为y的每10个值寻找y的最大值,那么您可以在下面使用。
内lapply
创建索引列表1:10
,11:20
,21:30
等。 外lapply
将这些指标,并从这些指标
lapply(lapply(0:4, function(i) 1:10+ 10*i), function(vec) {max(y[vec])})
我改变了1至0.0001,以满足我的需求,而且很好的解决得益于 – user2795569
我喜欢在这一个输出..即时通讯确保它不会是我想要感谢 – user2795569
@!。! user2795569,让我知道是否有任何跟进问题两种方法都有效。他们在概念上是不同的。 – A5C1D2H2I1M1N2O1R2T1
我使用了第二种方法并编辑了偏好代码并捕获了特殊情况。 df $ interval < - cut(df $ x,seq(-0.0001,(max(df $ x)+10),10)) – user2795569