希望标题足够明确。
我有一张看起来像这样的表:
classes id value a 1 10 a 2 15 a 3 12 b 1 5 b 2 9 b 3 7 c 1 6 c 2 14 c 3 6
这就是我想要的:
classes id value cumsum a 1 10 10 a 2 15 25 a 3 12 37 b 1 5 5 b 2 9 14 b 3 7 21 c 1 6 6 c 2 14 20 c 3 6 26
我已经看到了这种解决方案,并且已经成功地将其应用于没有多个类的情况:
id value cumsum 1 10 10 2 15 25 3 12 37
即使使用与我当前正在处理的数据集大小相等的数据集,它的速度也相当快。
然而,当我尝试完全相同的代码适用于我的工作,现在的数据集(它看起来像这样的问题,IE浏览器的多个类的第一个表格),不受子集划分它a,b,c,在我看来,它的服用年龄(它已经运行了4个小时。数据集是40.000行)。
a
b
c
在此上下文中使用时,是否知道链接的答案中的代码有问题?我很难将头缠绕在三角形连接上,但是当行数增加时,连接的大小可能会出现问题,从而使整个事情放慢了很多,这可能会使情况变得更糟。有多个“类别”可用于进行累加总和的事实。
有什么办法可以更快地完成此工作吗?我使用的是SQL在R通过SQLDF包装。使用R代码(带有或不带有外部通用程序包)或SQL代码的解决方案都可以。
SQL
R
SQLDF
谢谢
在SQL中,您可以使用ANSI标准sum() over ()功能进行累加总和:
sum() over ()
select classes, id, value, sum(value) over (partition by classes order by id) as cumesum from t;