2013-10-14 36 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

相關問題