2013-10-15 59 views
0

示例代碼:保持最大值在範圍R

x <- c(10,15,21,24,32,48,56,78,87,98) 
y <- c(2,3,4,5,2.1,3.1,1,1.5,1.9,2.6) 
df <- data.frame(x,y) 
df 

對不起即時通訊相對較新的編碼。昨天晚上我得到了一些幫助,通過找到每10個單位片段中最大的Y來縮小大數據幀,但結果可能導致錯誤。

我很抱歉我對編程一般還比較陌生。

所以,我有一個閾值說,y> 1.91。我如何在X中給出10個單位範圍內的最大Y?所以,我的想法是,我會找到max(y)>閾值,然後刪除10個單位內的所有x行。然後找到第二高的y(必須大於閾值)並刪除10個單位內的所有x。我會這樣做,直到我有一個列表中的所有值超過閾值和至少10個單位的對方。

你們可以幫我編碼嗎?

+2

你試過了什麼?我的意思是,你幾乎在編寫有效的代碼 - R是交互式的。嘗試一下,看看結果是什麼 - 然後嘗試將其與其他代碼組合在一起。例如。你知道'max(y)'給出了什麼,你可以看到'y> 1.91'給出了什麼,你可以猜測'y [y> 1.91]給出了......等等...... – thelatemail

+0

你能給出你想要的輸出結果的例子,給出你的例子'df'? – Hugh

回答

1

我不確定我理解你的問題。這是你想要做的嗎?

require(data.table) 
dt <- data.table(df) 
threshold <- 1.91 
dt <- dt[y>threshold, ] 
ans <- dt[0,] 

while (nrow(dt)>0){ 
    ans <- rbindlist(list(ans, dt[which.max(y),])) 
    xval <- ans[nrow(ans),x] 
    dt <- dt[x<(xval-10)|x>(xval+10)] 
} 
ans