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% основного вектора.