Проблема немного занижена.
- Что должно произойти, когда медиана отсутствует в данных?
- Что должно произойти, если медиана появляется в данных несколько раз?
Вот решение, которое берет (абсолютную) разницу между каждым значением и медианой, а затем возвращает индекс первой строки , для которой этот вектор разности достигает своего минимума.
with(x, which.min(abs(Col1 - median(Col1))))
# [1] 2
Функция quantile
с type = 1
(т.е. без усреднения) также может представлять интерес, в зависимости от желаемого поведения. Он возвращает нижнюю из двух «сторон» медианы, в то время как приведенный выше метод which.min
может зависеть от порядка ваших данных.
quantile(x$Col1, .5, type = 1)
# 50%
# 2
Опция, использующая quantile
, равна
with(x, which(Col1 == quantile(Col1, .5, type = 1)))
# [1] 2
Это может вернуть несколько номеров строк.
Edit:
Если вы хотите, чтобы он возвращал только первое совпадение, вы можете изменить его, как показано ниже
with(x, which.min(Col1 != quantile(Col1, .5, type = 1)))