Как найти верхние n% записей в столбце фрейма данных с помощью R
Вопрос
У меня есть набор данных, показывающий обменный курс австралийского доллара по отношению к доллару США один раз в день в течение примерно 20 лет.У меня есть данные во фрейме данных, где первый столбец - это дата, а второй столбец - обменный курс.Вот пример из полученных данных:
>data
V1 V2
1 12/12/1983 0.9175
2 13/12/1983 0.9010
3 14/12/1983 0.9000
4 15/12/1983 0.8978
5 16/12/1983 0.8928
6 19/12/1983 0.8770
7 20/12/1983 0.8795
8 21/12/1983 0.8905
9 22/12/1983 0.9005
10 23/12/1983 0.9005
Как бы я мог отобразить верхние n% этих записей?Например.допустим, я хочу увидеть дни и обменные курсы для тех дней, когда обменный курс попадает в топ-5% всех обменных курсов в наборе данных?
Решение
Для топ - 5%:
n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]
Другие советы
Для топ-5% также:
head(data[order(data$V2,decreasing=T),],.05*nrow(data))
Другим решением могло бы быть использование для sqldf
если данные отсортированы на основе V1
значение:
library(sqldf)
sqldf('SELECT * FROM df
ORDER BY V1
LIMIT (SELECT 0.05 * COUNT(*) FROM df)
')
Вы можете изменить форму тарифа 0.05
(5%
) по любой требуемой ставке.
Не связан с StackOverflow