这是一个示例数据框:
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)