Rを使用したデータフレームの列内のレコードの上位n%を見つける方法

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

  •  21-09-2019
  •  | 
  •  

質問

私は約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.055%)を変更することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top