相关疑难解决方法(0)

按组获取最高值

这是一个示例数据框:

d <- data.frame(
  x   = runif(90),
  grp = gl(3, 30)
) 
Run Code Online (Sandbox Code Playgroud)

我想要d包含x每个值的前5个值的行的子集grp.

使用base-R,我的方法是这样的:

ordered <- d[order(d$x, decreasing = TRUE), ]    
splits <- split(ordered, ordered$grp)
heads <- lapply(splits, head)
do.call(rbind, heads)
##              x grp
## 1.19 0.8879631   1
## 1.4  0.8844818   1
## 1.12 0.8596197   1
## 1.26 0.8481809   1
## 1.18 0.8461516   1
## 1.29 0.8317092   1
## 2.31 0.9751049   2
## 2.34 0.9269764   2
## 2.57 0.8964114   2
## 2.58 0.8896466   2 …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

76
推荐指数
4
解决办法
7万
查看次数

按组选择前N个值

这是对r-help邮件列表中提出的问题的回应.

以下是如何使用组查找顶级值的大量示例sql,因此我认为使用R sqldf包可以轻松转换该知识.

一个例子:当mtcars按时分组时cyl,这里是每个不同值的前三个记录cyl.请注意,在这种情况下排除关系,但显示处理关系的一些不同方法会很好.

                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb ranks
Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1   2.0
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2   1.0
Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1   2.0
Merc 280            19.2   6 167.6 123 3.92 3.440 18.30 …
Run Code Online (Sandbox Code Playgroud)

aggregate r

38
推荐指数
5
解决办法
7万
查看次数

标签 统计

r ×2

aggregate ×1

data.table ×1

dplyr ×1