Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R在找到0时重置累积值_R - Fatal编程技术网

R在找到0时重置累积值

R在找到0时重置累积值,r,R,我正在使用ff包加载excel文件 i=as.ffdf(data.frame(a=c(1,1,1,1,1,1), b=c(1,4,6,2,5,3), c=c(1,1,1,1,1,1), d=c(1,0,1,1,0,1))) 我正在尝试获取d列上的累积和,并在发现0时重置它。我正在尝试获得以下输出 a b c d Result 1 1 1 1 1 1 4 1 0 0 1 6 1 1 1 1 2 1 1 2 1 5

我正在使用
ff
包加载excel文件

i=as.ffdf(data.frame(a=c(1,1,1,1,1,1), b=c(1,4,6,2,5,3), c=c(1,1,1,1,1,1), d=c(1,0,1,1,0,1)))
我正在尝试获取d列上的累积和,并在发现0时重置它。我正在尝试获得以下输出

a   b   c   d   Result
1   1   1   1   1
1   4   1   0   0
1   6   1   1   1
1   2   1   1   2
1   5   1   0   0
1   3   1   1   1
我知道,我可以通过
ddply
轻松实现它,但我有大量
数据行,即>5000000行。


谢谢

对于24385601行,这将起作用,但稍微慢一点。我在a列和c列上创建了独特的组合,并使用
Arun
解决方案。键列(键a\u c)用于分割数据集,即重置累积和

Create a unique key on column a and c
    i$key_a_c <- ikey(i[c("a", "c")])

Generate cumulative series by spliting on the basis of key_a_c
    p1=ffdfdply(i, split=as.character(i$key_a_c), FUN= function(x) {
        x$Result <- as.ff(x[, "d"] * sequence(rle(x[, "d"])$lengths))
        as.data.frame(x)
    }, trace=T)
在a列和c列上创建唯一键

i$key\u a\u c将始终是0/1数据?此外,编辑而不是重新发布是一种良好的做法。
@EDi
,是的,它始终是0/1数据
@Arun
,您提供的SOUTION用于处理一小部分数据。我收到内存错误
无法分配大小为93.0 Mb的向量
。我正在处理超过5000000行的工作,好的,我会处理的。