【发布时间】:2015-11-03 09:48:28
【问题描述】:
我正在尝试使用 data.table 来加快对相对较大的数据集的一些计算。下面的例子复制了这种情况:
DT = data.table(a=sample(1:2), b=sample(1:1000,20))
> DT
a b
1: 2 440
2: 1 5
3: 2 795
4: 1 138
5: 2 941
6: 1 929
7: 2 759
8: 1 192
9: 2 994
10: 1 176
11: 2 152
12: 1 893
13: 2 28
14: 1 884
15: 2 467
16: 1 761
17: 2 879
18: 1 964
19: 2 802
20: 1 271
我想对不同数量的重复组 a==1 和 a==2 进行采样,例如,n1=5 和 n2=3 重复而不替换,并获得类似的东西
a b
1: 2 440
2: 2 879
3: 2 994
4: 2 152
5: 2 879
6: 1 884
7: 1 964
8: 1 929
但我似乎无法使用 data.table 解决它,即,我无法将不同的样本大小插入到 data.table 命令中。有什么办法吗?我是 data.table 和 R 的新手,因此非常感谢任何建设性的指导
【问题讨论】:
-
您的真实数据集中
a中有两个以上的组?就像如果这只是两组,你可以只做DT[a == 1, indx := 3]; DT[a != 1, indx := 5] ; DT[, .SD[sample(.N, indx)], by = a]或使用.I而不是.SD优化它。
标签: r data.table