【发布时间】:2013-06-10 10:39:32
【问题描述】:
我有一个非常大的数据集,其中包含大约 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 的每个唯一组合作为键的数据?
【问题讨论】:
-
请告诉我们究竟你想做什么。 “重复对数据子集进行计算”是什么意思?什么计算?在哪些子集上?使用上面显示的数据,告诉我们您想要做什么以及结果应该是什么。然后我们就可以提供帮助了。
-
更新问题..
-
我认为您希望获得一个包含 V2 和 V5 组合的
data.tables 列表?您需要查看?split。但是,如果您可以解释您打算如何处理这些 split-data.tables,也许有更好的方法。 -
很难解释我想做什么,但我会尽量简单地解释。不,我不想要列表,我想要数据表,因为我必须将它与另一个表合并以进行一些基本的聚合练习。一旦完成,我将使用 V1 作为键将带有附加字段的新数据表合并回原始表。
-
@Pawan 可能有一种方法可以在单个
data.table调用中执行此操作。如果您不发布示例,没有人可以告诉您。向我们展示您想要的另一个表和聚合。老实说,Arun 可能已经输入了完整的 data.table 解决方案的准系统。为他填空。
标签: r data.table subset