2013-10-14 38 views
0

示例代码:确定最大值为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的数据框。

回答

1

得到y最大值我会用%/%创建组,然后使用aggregate。我已经转换您的dfmatrixdata.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 
+0

我喜欢在这一个输出..即时通讯确保它不会是我想要感谢 – user2795569

+0

@!。! user2795569,让我知道是否有任何跟进问题两种方法都有效。他们在概念上是不同的。 – A5C1D2H2I1M1N2O1R2T1

+0

我使用了第二种方法并编辑了偏好代码并捕获了特殊情况。 df $ interval < - cut(df $ x,seq(-0.0001,(max(df $ x)+10),10)) – user2795569

1

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

lapply创建索引列表1:1011:2021:30等。 外lapply将这些指标,并从这些指标

lapply(lapply(0:4, function(i) 1:10+ 10*i), function(vec) {max(y[vec])}) 
+0

我改变了1至0.0001,以满足我的需求,而且很好的解决得益于 – user2795569

相关问题