В качестве первого шага вы хотите разделить data.frame на одну пробную версию:
splitted <- split(dataset, dataset$Trials)
Затем для каждого из этих элементов мы выбираем все непроверяемые элементы, которые удовлетворяют 2 условиям:>=
самый маленький чек и <=
самый большой чек.И нам нужно сделать это для каждого из sub-data.frames в splitted
, поэтому мы используем lapply
, чтобы применить нашу функцию к каждому из sub-data.frames:
selection <- lapply(splitted, function(subdf) {
subdf[subdf$Is.Check==0 &
subdf$Reaction >= min(subdf$Reaction[subdf$Is.Check==1]) &
subdf$Reaction <= max(subdf$Reaction[subdf$Is.Check==1])
,]
})
Выбор - теперь список с каждой проверкой выбора правильных не проверок.Если вы хотите объединить эти выборки в один большой data.frame, вы можете использовать bind_rows
из dplyr
-пакета
install.packages('dplyr') # If you don't have it yet
Fullselection <- dplyr::bind_rows(selection)
Если по какой-то причине вы не можете установить dplyr
, do.call(rbind, selection)
также работает (но немного медленнее, и это более уродливый код.)