Следующее вычислит медиану для всех ненулевых и ненулевых значений в каждой строке фрейма данных.
df <- iris
apply(df, 1, FUN = function(x){
values_to_calculate <- x[which(!x == 0)]
return(median(values_to_calculate, na.rm = T))
})
Функция apply принимает три параметра, см. Документацию здесь: https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/apply
- Matrix / Vector / Dataframe: в этом примере df содержащий набор данных iris
- Margin: в этом примере значение margin равно 1, что означает, что apply будет проходить по каждой строке. Чтобы выполнить итерацию по каждому столбцу, измените 1 на 2 или для каждой ячейки измените функцию 1 на c (1,2)
- , чтобы применить ее к полям: в этом случае мы создаем пользовательский функция и передача каждой строки в эту пользовательскую функцию под переменной х. Затем мы удалим все ненулевые значения из строки и, наконец, вернем медиану
Примечание. Как правило, я бы не рекомендовал удалять 0 из медианного вычисления, если только причина, по которой нули находятся в наборе данных в первое место хорошо известно