R - как убрать верхний х% вектора

Мне нужно выбросить выбросы моей переменной. Я хочу уменьшить верхние 10 процентов моей переменной. Тем не менее, я понятия не имею, как узнать, какие мои верхние 10 %. Если я сделаю случайное сокращение в 30, я получу верхние 3,45 %.

dat$T102_01[dat$T102_01 < 30]

Есть ли способ сказать r не принимать значения < 30, а первые 90% значений?

Поскольку я не хочу принимать решение, основанное на контенте (все, что выше 30, нереально), было бы лучше взять верхние 10% всех собранных мной переменных.

Буду очень благодарен за любые комментарии

Извините, я не могу добавить фотографию своего сюжета. Распределение искажено, и большинство значений находятся в диапазоне от 0 до 30, значения самого просмотра находятся в диапазоне от 30 до 100.

2 ответа

Я бы использовал функцию квантиля следующим образом:

x <- rnorm(50)
p90 <- quantile(x = x,probs = .9)
want <- x[x<p90]

Вы можете сделать это, выполнив sort и найдите значение 90% пути через него:

vec <- rnorm(1000)

cut <- sort( vec )[ round( length( vec ) * 0.9 ) ]

vec <- vec[ vec < cut ]

Таким образом, мы сортируем вектор и берем значение в точке 90% пути вектора через cut точка. Затем мы используем cut указывают, чтобы взять только нижние 90% основного вектора.

Другие вопросы по тегам