加速R计算的行动

时间:2012-06-06 00:26:54

标签: r plyr data.table

我问这是关于R的一般/初学者问题,不是我所使用的软件包的具体问题。

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

我正在运行以下脚本并且它已经运行了2个多小时 - 我想我必须要做些什么才能加快速度。

代码:

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

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

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

3 个答案:

答案 0 :(得分:3)

在我看来你可能想要:

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

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

答案 1 :(得分:2)

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

orders[,list(NumOrders=length(OrderID)),by=ClientID]

答案 2 :(得分:1)

您的所有代码似乎都是这样:

orders[order(orders$ClientID), ]

那会更快。