2013-10-15 2 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 

К сожалению им относительно новым для кодирования. Вчера вечером я получил некоторую помощь, сузив большой фрейм данных, найдя самый большой Y на каждые 10 сегментов, но оказывается, что это может привести к ошибкам.

Прошу прощения. Я по-прежнему относительно новичок в программировании в целом.

Итак, у меня есть пороговое значение, например, y> 1.91. Как я могу найти наибольший Y в диапазоне 10 единиц в X? Итак, я думаю, что я найду порог max (y)>, а затем удалю все x строк в пределах 10 единиц. Затем найдите 2-й максимум y (должен быть больше порога) и удалите все x в пределах 10 единиц. Я сделал бы это, пока у меня не будет списка всех значений, которые превышают пороговое значение и не менее 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 
Смежные вопросы