Rを使用したデータフレームの列内のレコードの上位n%を見つける方法
質問
私は約20年の期間にわたって一日一回米ドルに対するオーストラリアドルの為替レートを示すデータセットを持っています。私は、最初の列は日付であると、データフレーム内のデータを有し、第2列は、為替レートです。ここでは、データからのサンプルがあります:
>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