R 加快数据表方式的数据转换
我有一大张合同日期表。在最后一个表中,我希望每个月都有一行合同处于活动状态。问题是我当前解决方案的速度。有没有更快的方法来实现这一点?(我有超过一百万个不同合同运行时的ID,需要几分钟。我怀疑cbind?!)R 加快数据表方式的数据转换,r,data.table,R,Data.table,我有一大张合同日期表。在最后一个表中,我希望每个月都有一行合同处于活动状态。问题是我当前解决方案的速度。有没有更快的方法来实现这一点?(我有超过一百万个不同合同运行时的ID,需要几分钟。我怀疑cbind?!) 库(data.table) dt第一个想法:我可以想到一些调整 首先,我会使用seq.int而不是seq,后者是S3通用的,需要一段时间才能发送,这可能会给一百万组带来成本 第二,我会使用1.9.3(它几乎已经完成,应该很快被推到CRAN上),在那里做了很多增强 第三,我会在j中使用c(
库(data.table)
dt第一个想法:我可以想到一些调整
- 首先,我会使用
seq.int
而不是seq
,后者是S3通用的,需要一段时间才能发送,这可能会给一百万组带来成本
- 第二,我会使用
1.9.3
(它几乎已经完成,应该很快被推到CRAN上),在那里做了很多增强
- 第三,我会在
j
中使用c(.SD,seq.int(start,end,by=“month”)
——这在1.9.3
中进行了内部优化,因此速度会快得多
本质上,请在1.9.3中尝试:
dt[, c(.SD, seq.int(start, end, by="month")), by=id]
当然,这仍然在一百万组上运行,因此可能仍然较慢(即使比您之前的答案更快)。不过,我还是很想知道这里的速度(如果有的话)
但这里真正的问题是,我们正在为每个组评估j-expression
,你已经得到了一百万个。理想的情况是seq.int
的from
和to
参数能够处理长度大于1的输入。但是,最有可能的是,您必须编写自己的C/C++代码才能达到目标。第一个想法:我可以想到一些调整
- 首先,我会使用
seq.int
而不是seq
,后者是S3通用的,需要一段时间才能发送,这可能会给一百万组带来成本
- 第二,我会使用
1.9.3
(它几乎已经完成,应该很快被推到CRAN上),在那里做了很多增强
- 第三,我会在
j
中使用c(.SD,seq.int(start,end,by=“month”)
——这在1.9.3
中进行了内部优化,因此速度会快得多
本质上,请在1.9.3中尝试:
dt[, c(.SD, seq.int(start, end, by="month")), by=id]
当然,这仍然在一百万组上运行,因此可能仍然较慢(即使比您之前的答案更快)。不过,我还是很想知道这里的速度(如果有的话)
但这里真正的问题是,我们正在为每个组评估j-expression
,你已经得到了一百万个。理想的情况是seq.int
的from
和to
参数能够处理长度大于1的输入。但是,最有可能的是,您必须编写自己的C/C++代码才能达到目标。第一个想法:我可以想到一些调整
- 首先,我会使用
seq.int
而不是seq
,后者是S3通用的,需要一段时间才能发送,这可能会给一百万组带来成本
- 第二,我会使用
1.9.3
(它几乎已经完成,应该很快被推到CRAN上),在那里做了很多增强
- 第三,我会在
j
中使用c(.SD,seq.int(start,end,by=“month”)
——这在1.9.3
中进行了内部优化,因此速度会快得多
本质上,请在1.9.3中尝试:
dt[, c(.SD, seq.int(start, end, by="month")), by=id]
当然,这仍然在一百万组上运行,因此可能仍然较慢(即使比您之前的答案更快)。不过,我还是很想知道这里的速度(如果有的话)
但这里真正的问题是,我们正在为每个组评估j-expression
,你已经得到了一百万个。理想的情况是seq.int
的from
和to
参数能够处理长度大于1的输入。但是,最有可能的是,您必须编写自己的C/C++代码才能达到目标。第一个想法:我可以想到一些调整
- 首先,我会使用
seq.int
而不是seq
,后者是S3通用的,需要一段时间才能发送,这可能会给一百万组带来成本
- 第二,我会使用
1.9.3
(它几乎已经完成,应该很快被推到CRAN上),在那里做了很多增强
- 第三,我会在
j
中使用c(.SD,seq.int(start,end,by=“month”)
——这在1.9.3
中进行了内部优化,因此速度会快得多
本质上,请在1.9.3中尝试:
dt[, c(.SD, seq.int(start, end, by="month")), by=id]
当然,这仍然在一百万组上运行,因此可能仍然较慢(即使比您之前的答案更快)。不过,我还是很想知道这里的速度(如果有的话)
但这里真正的问题是,我们正在为每个组评估j-expression
,你已经得到了一百万个。理想的情况是seq.int
的from
和to
参数能够处理长度大于1的输入。但是,最有可能的情况是,您必须编写自己的C/C++代码才能达到目的。您是否尝试过使用dt[,seq(start,end,by=“month”),by=id]
生成月份,然后将其与原始数据合并?您是否尝试过使用dt[,seq(start,end,by=“month”),by=id]生成月份
然后将其与原始数据合并?您是否尝试过使用dt[,seq(start,end,by=“month”),by=id]
生成月份,然后将其与原始数据合并?您是否尝试过使用dt[,seq(start,end,by=“month”),by=id]生成月份,然后将其与原始数据合并?