I R은 문제, 그것이 생성하는 출력 단순히 분할 조건을 고려하지 않고 누적 합R ffdfdply 분할 문제
a=as.ffdf(data.frame(b=11:20,c=c(4,4,4,4,4,5,5,5,5,5), d=c(1,1,1,0,0,0,1,0,1,1)))
ffdfdply(a, split=a$c, FUN= function(x) {data.frame(cumsum(x$d))}, trace=T)
ffdfdply 기능을 갖는다.
나는이c cumsum
4 1
4 2
4 3
4 4
4 4
5 0
5 1
5 1
5 2
5 3
같은 출력이 우리가 "분할"에서 여러 열을 포함 할 수 있습니다해야합니까? 누군가가 예제를 제공한다면 그것은 좋을 것입니다.
감사합니다.
@jwijffels, 나는 데이터
i=as.ffdf(data.frame(a=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2), b=c(1,4,6,2,5,3,1,4,3,2,8,7,1,3,5,4,2,6,3,1,2), c=c(1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2), d=c(1,0,1,1,0,1,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0)))
내가받은 출력이 올바르지의 다른 세트에 솔루션을 테스트합니다. 컬럼 a와 c를 기준으로 컬럼 d의 누적 합계가 필요합니다.
아래의 단계는 정확하고 올바른 결과를
idx <- ffdforder(i[c("a","c","b")])
ordered_i <- i[idx, ]
ordered_i$key_a_c <- ikey(ordered_i[c("a", "c")])
했다하지만 난 누적 합계하려고하면 잘못된 결과를 얻었다.
cumsum_i <- ffdfdply(ordered_i, split=as.character(ordered_i$key_a_c), FUN= function(x) {
## Data in RAM, on which you can use data.table
x <- as.data.table(x)
result <- x[, cumsum_a_c := cumsum(x$d), by = list(key_a_c)]
as.data.frame(result)
}, trace=T)
도와주세요. 큰 데이터에 대해 이러한 일련의 명령을 실행해야합니다. 도움을 읽기
[ffdfdply를 사용하여 데이터를 분할하고 분할 된 각 ID의 특성을 얻을 수 있습니다] (http://stackoverflow.com/questions/10981384/using-ffdfdply-to-split-data) 각각의 id를 얻는 특성) – thelatemail
cumsum_a_c : = cumsum (x $ d) 대신 cumsum_a_c : = cumsum (d)를 사용하십시오. 이것이 FUN 내부의 올바른 data.table 구문입니다. – jwijffels