Comment trouver top n% des enregistrements dans une colonne d'un dataframe en utilisant R
Question
J'ai un ensemble de données montrant le taux de change du dollar australien par rapport au dollar des États-Unis une fois par jour sur une période d'environ 20 ans. J'ai les données dans une trame de données, la première colonne étant la date et la deuxième colonne étant le taux de change. Voici un exemple à partir des données:
>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
Comment pourrais-je aller sur l'affichage du top n% de ces dossiers? Par exemple. dire que je veux voir les jours et les taux de change pour les jours où le taux de change se situe dans le top 5% des taux de change dans l'ensemble de données?
La solution
Pour les 5%:
n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]
Autres conseils
Pour les 5% aussi:
head(data[order(data$V2,decreasing=T),],.05*nrow(data))
Une autre solution pourrait être utilisé pour sqldf
si les données sont triées en fonction de la valeur V1
:
library(sqldf)
sqldf('SELECT * FROM df
ORDER BY V1
LIMIT (SELECT 0.05 * COUNT(*) FROM df)
')
Vous pouvez modifier la forme de taux 0.05
(5%
) à un débit requis.