您如何在data.table中的每个组中抽取随机行?

你将如何使用data.table来有效地在数据框架中的每个组中的行样本?

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],将为每个“a”返回三行的样本(返回的行的顺序不重要):

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

我是data.table和R的新手,所以任何建设性的指导将被大大的吸引

也许这样吗?

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

(感谢乔希修正,如下)

翻译自:https://stackoverflow.com/questions/16289182/how-do-you-sample-random-rows-within-each-group-in-a-data-table

转载注明原文:您如何在data.table中的每个组中抽取随机行?