0

我有一个非常大的数据集,大约有 300 万行和 13 列作为 R 中的数据表。我复制了一个样本数据——

 V1 V2 V3    V4   V5    V6        V7  V8 V9  V10    V11   V12     V13
 1 AAE CDG  AAE  PAR NAFR_UKWEU   2    0  0  1030   1250  0.15335  0
 2 AAE CDG  AAE  PAR NAFR_UKWEU   2    5  5  1130   1350  0.15293  0
 3 AAE ORY  AAE  PAR NAFR_UKWEU   2    4  4  1420   1750  0.00100  0
 4 AAE ORY  AAE  PAR NAFR_UKWEU   2    0  0  1320   1540  0.18183  0
 5 AAE ORY  AAE  PAR NAFR_UKWEU   2    5  5  1320   1540  0.18112  0
 6 AAE TXL  AAE  BER NAFR_UKWEU   2    3  3  1320   1540  0.17799  0
 7 AAE TXL  AAE  BER NAFR_UKWEU   2    1  1  1135   1345  0.15178  0
 8 AAL AGP  AAL  AGP  SCAND_SEU   3    1  1   645   1355  0.04071  0
 9 AAL AGP  AAL  AGP  SCAND_SEU   3    3  3   705   1425  0.01577  0
10 AAL AGP  AAL  AGP  SCAND_SEU   3    3  3   645   1355  0.01430  0

我想以V4&V5为key,从数据表中动态获取子集。如果我必须对上面给出的示例数据进行操作,我将在 thress 步骤中获得三个数据表,因为我们有 V4 和 V5 的三个独特组合。所以所需的输出是 -

Step 1- Table 1:
V1 V2 V3    V4   V5    V5         V6  V7 V8  V9     V10   V11      V12
 1 AAE CDG  AAE  PAR NAFR_UKWEU   2    0  0  1030   1250  0.15335  0
 2 AAE CDG  AAE  PAR NAFR_UKWEU   2    5  5  1130   1350  0.15293  0
 3 AAE ORY  AAE  PAR NAFR_UKWEU   2    4  4  1420   1750  0.00100  0
 4 AAE ORY  AAE  PAR NAFR_UKWEU   2    0  0  1320   1540  0.18183  0
 5 AAE ORY  AAE  PAR NAFR_UKWEU   2    5  5  1320   1540  0.18112  0

 Step 2- Table 2:
 V1 V2 V3    V4   V5    V5        V6  V7 V8  V9     V10   V11      V12
 6 AAE TXL  AAE  BER NAFR_UKWEU   2    3  3  1320   1540  0.17799  0
 7 AAE TXL  AAE  BER NAFR_UKWEU   2    1  1  1135   1345  0.15178  0

 Step 3- Table 3: 

 V1 V2 V3    V4   V5    V5        V6  V7 V8  V9     V10   V11      V12
 8 AAL AGP  AAL  AGP  SCAND_SEU   3    1  1   645   1355  0.04071  0
 9 AAL AGP  AAL  AGP  SCAND_SEU   3    3  3   705   1425  0.01577  0
10 AAL AGP  AAL  AGP  SCAND_SEU   3    3  3   645   1355  0.01430  0

现在,由于数据量巨大,V4 和 V5 的组合有很多可能的组合,我们如何有效地提取 V4 和 V5 的每个唯一组合作为键的数据?

4

1 回答 1

0

我仍然不知道你想要什么。但我要尝试一下。假设你的 data.table 是 DT

idx <- unique(DT[, list(V4, V5)])
setkey(DT, "V4", "V5")
for (i in seq_len(nrow(idx))) {
    DT[idx[i]] # print(DT[idx[i]]) will show you each subset
}
于 2013-06-10T11:22:37.507 回答