use*_*782 2 r data-manipulation
我有一个具有这种结构的大型数据集(数百万条记录):
id | ident1 | ident2
1 A000001 B000001
2 A000001 B000002
................
99 A000001 B000099
.........
337 A000002 B000037
338 A000002 B000043
Run Code Online (Sandbox Code Playgroud)
换句话说,对于每个[ident1],我在[ident2]中有大量条目.我希望能够只选择其中的20个(所有这些条目,如果少于20个).
顺序并不重要:所以如果给定的ident1有100个匹配的[ident2],我想要前20个条目,或20个随机条目,这没关系.
在此先感谢,p.
尝试
library(dplyr)
df %>%
group_by(ident1) %>%
slice(1:20)
Run Code Online (Sandbox Code Playgroud)
或使用 data.table
library(data.table)
setDT(df)[, head(.SD,20), by=ident1]
Run Code Online (Sandbox Code Playgroud)
如果您需要样品
setDT(df)[df[, .I[sample(.N,20, replace=FALSE)], by=ident1]$V1]
Run Code Online (Sandbox Code Playgroud)
如果某些组的20行数少于行数sample
setDT(df)[,if(.N < 20) .SD else .SD[sample(.N,20, replace=FALSE)], by=group]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |