3

我问这是一个关于 的一般/初学者问题R,而不是特定于我使用的包。

我有dataframe300 万行和 15 列。我不认为这是一个巨大的数据框,但也许我错了。

我正在运行以下脚本,它已经运行了 2 个多小时 - 我想我必须采取一些措施来加快速度。

代码:

ddply(orders, .(ClientID), NumOrders=len(OrderID))

这不是一个过于密集的脚本,或者我不认为它是。

在数据库中,您可以向表中添加索引以提高连接速度。R我应该在导入时执行类似的操作以使函数/包运行得更快吗?

4

3 回答 3

3

在我看来,您可能想要:

orders$NumOrders <- with( orders( ave(OrderID  , ClientID) , FUN=length) )

(我不知道 len() 函数存在。)

于 2012-06-06T01:14:58.813 回答
2

使用建议的data.table包,以下操作应该在一秒钟内完成工作:

orders[,list(NumOrders=length(OrderID)),by=ClientID]
于 2012-06-06T11:39:28.210 回答
1

看起来你所有的代码都是这样的:

orders[order(orders$ClientID), ]

那会更快。

于 2012-06-06T01:08:28.507 回答