Как найти 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% всех обменных курсов в наборе данных?

Ответы

Ответ 1

Для верхних 5%:

n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]

Ответ 2

Для верхних 5% также:

head(data[order(data$V2,decreasing=T),],.05*nrow(data))

Ответ 3

Другое решение может быть использовано для sqldf если данные отсортированы на основе значения V1:

library(sqldf)
sqldf('SELECT * FROM df
       ORDER BY V1
       LIMIT (SELECT 0.05 * COUNT(*) FROM df)
      ') 

Вы можете изменить ставку 0.05 (5%) на любую необходимую ставку.