示例代碼:確定最大值爲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