Ответ 1
Для верхних 5%:
n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]
У меня есть набор данных, показывающий обменный курс Австралийского Доллара против доллара США один раз в день в течение приблизительно 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%
) на любую необходимую ставку.