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行的工作,好的,我会处理的。