你会如何使用数据.表来有效地对数据帧中每个组内的行进行采样?

DT = data.table(a = sample(1:2), b = sample(1:1000,20))
DT
    a   b
 1: 2 562
 2: 1 183
 3: 2 180
 4: 1 874
 5: 2 533
 6: 1  21
 7: 2  57
 8: 1  20
 9: 2  39
10: 1 948
11: 2 799
12: 1 893
13: 2 993
14: 1  69
15: 2 906
16: 1 347
17: 2 969
18: 1 130
19: 2 118
20: 1 732

我想到的是:DT[ , sample(??, 3), by = a],它将 for each "a"返回三行样本(返回行的顺序不重要):

    a   b
 1: 2 180
 2: 2  57
 3: 2 799
 4: 1  69
 5: 1 347
 6: 1 732

推荐答案

也许是这样的?

> DT[,.SD[sample(.N, min(3,.N))],by = a]
   a   b
1: 1 744
2: 1 497
3: 1 167
4: 2 888
5: 2 950
6: 2 343

(感谢乔希的更正,如下所示.)

R相关问答推荐

根据shiny 应用程序中的数字输入更改图标 colored颜色

在R中查找每个组不同时间段的总天数

保存包含循环和ifelse的函数的输出

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

如何在R中合并两个基准点?

在ggplot中为不同几何体使用不同的 colored颜色 比例

使用R闪光显示所有数据点作为默认设置

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

迭代到DataFrame列并获得成对的值列表(col1->;col2、col2->;col3、col3->;col4等)的正确方法.

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

如何根据数据帧中的值从该数据帧中提取值?

QY数据的处理:如何定义QY因素的水平

我如何go 掉盒子图底部的数字?

停止ggplot将多行减少到一行

创建在文本字符串中发现两个不同关键字的实例的数据框

减少雨云面之间的间距并绘制所有统计数据点

用满足特定列匹配的另一行替换NA行

构建一个6/49彩票模拟系统

为什么将负值向量提升到分数次方会得到NaN

如何使用包metaviz更改标签的小数位数?