R在我的数据框中保留每个日期的前10行

时间:2015-04-30 03:07:49

标签: r

我有按日期排序的股票数据数据集,然后按该日期从最大到最小的回报幅度排序。每天有大约800种股票。

如何创建一个新数据框,其中只有每天前10名股票的回报率最高?

所以我需要每个日期前十名,其他我不在乎。

2 个答案:

答案 0 :(得分:2)

dplyr是你的朋友。类似的东西:

new_df <- df %>% group_by(date) %>% top_n(10, stock)

答案 1 :(得分:2)

data.table也可以快速完成此操作。

library(data.table)

# here are 20 random values on each of two dates
fake_data <-
  data.table(date=rep(Sys.Date()-1:2, each=20), 
             stock=rnorm(20*2))

# subset data by date, then order the SD by stock 
# return (descending) and take first 10 rows
fake_data[, .SD[order(-stock)][1:10,], by=date]