Я пытаюсь создать функцию, которая объединяет данные на основе нескольких условий. Мои данные имеют две переменные: max_dist
и activated.
Функция должна создавать несколько векторов для разных бинов; проверьте, попадает ли max_dist
в определенный диапазон, а затем добавьте 1
к вектору, если он попадает в этот диапазон, и activated
равно TRUE
или 0
к списку, если activated
равно FALSE
.
Ключевая часть заключается в том, что для каждого наблюдения, если max_dist больше указанного диапазона, но activated
также равно TRUE
, тогда я хотел бы включить в этот контейнер значение 0. Поэтому некоторые наблюдения с высоким max_dist
значения будут объединены несколько раз.
В настоящее время я структурировал это так (сокращенная версия - полная длина - 6 ячеек):
binning_function <- function(df) {
#create a series of vectors corresponding to bins
two_hundred <- c()
four_hundred <- c()
#iterate through dataframe to add 0 or 1 values to each vector
for (i in 1:nrow(df)) {
if (df$activated[i]==TRUE && df$max_dist[i]<=0.2) {
append(two_hundred, 1)
}
else if (df$max_dist[i]>0.2 || df$activated[i]==FALSE) {
append(two_hundred, 0)
}
}
for (i in 1:nrow(df)) {
if (df$activated[i]==TRUE && df$max_dist[i]>0.2 && df$max_dist[i]<=0.4) {
append(four_hundred, 1)
}
else if (df$max_dist[i]>0.4 || df$activated[i]==FALSE) {
append(four_hundred, 0)
}
}
return(list(two_hundred,four_hundred))
}
Когда я запускаю эту функцию на фрейме данных, она возвращает список:
[[1]]
NULL
[[2]]
NULL