Как найти верхние n% записей в столбце фрейма данных с помощью R

StackOverflow https://stackoverflow.com/questions/1563961

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть набор данных, показывающий обменный курс австралийского доллара по отношению к доллару США один раз в день в течение примерно 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%) по любой требуемой ставке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top