我有一个数据集,显示在大约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%的日期和汇率?
发布于 2009-10-14 02:34:53
对于前5%的人:
n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]发布于 2010-01-20 04:34:12
对于前5%的人也是如此:
head(data[order(data$V2,decreasing=T),],.05*nrow(data))发布于 2019-04-29 12:05:29
如果根据V1值对数据进行排序,则可以将另一种解决方案用于sqldf:
library(sqldf)
sqldf('SELECT * FROM df
ORDER BY V1
LIMIT (SELECT 0.05 * COUNT(*) FROM df)
') 您可以将rate form 0.05 (5%)更改为任何所需的rate。
https://stackoverflow.com/questions/1563961
复制相似问题