3 回答
TA贡献1829条经验 获得超13个赞
随便按什么排序(例如,mpg,问题尚不清楚)
mt <- mtcars[order(mtcars$mpg), ]
然后使用by函数获取每组中的前n行
d <- by(mt, mt["cyl"], head, n=4)
如果希望结果为data.frame:
Reduce(rbind, d)
编辑: 处理关系比较困难,但是如果需要所有关系:
by(mt, mt["cyl"], function(x) x[rank(x$mpg) %in% sort(unique(rank(x$mpg)))[1:4], ])
另一种方法是根据其他一些信息(例如,
mt <- mtcars[order(mtcars$mpg, mtcars$hp), ]
by(mt, mt["cyl"], head, n=4)
TA贡献1111条经验 获得超0个赞
dplyr 绝招
mtcars %>%
arrange(desc(mpg)) %>%
group_by(cyl) %>% slice(1:2)
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
2 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
3 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
5 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
6 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
- 3 回答
- 0 关注
- 550 浏览
添加回答
举报