2016-11-10 5 views
-1

사용자 ID, 주 번호, 사용자가 처리 한 사실 (처리됨, 0 또는 1) 및 방금 사용하는 열을 나열하는 data.table이 있습니다. 내가 HowMany라고 얼마나 많은 값을 계산하려면 :두 함수를 적용하여 data.table을 집계하는 방법

내가 찾으려
data <- data.table(WeekNumber=c(33,33,33,34,34,33,33,34,34), 
     User=c(1,1,1,1,1,2,2,2,2), 
     Processed=c(1,1,0,0,1,0,1,0,1), 
     HowMany=c(1,1,1,1,1,1,1,1,1)) 

는 각 주, 일이 아닌 것들의 합이 완료, 그래서 이런 일을 수행

> dcast(setDT(data), WeekNumber~Processed, value.var="HowMany", sum) 
    WeekNumber 0 1 
1:   33 2 3 
2:   34 2 2 

을 이제 일의 평균 횟수를 확인하고 일주일에 완료하지 않으려합니다. 따라서이 경우 사용자 befo에 의해 어느 정도 집계해야합니다. 다시, 그러나 나는이 단계에서 실패 : 내 최적의 결과가 될 것 동안

> dcast(setDT(data), WeekNumber~Processed+User, value.var="HowMany", mean) 
    WeekNumber 0_1 0_2 1_1 1_2 
1:  33 1 1 1 1 
2:  34 1 1 1 1 

:

WeekNumber 0 1 
     33 1 1.5 
     34 1 1 
+2

[표 (가공 WeekNumber는)/uniqueN은 (WeekNumber)]을' – Frank

+0

@Frank 덕분에, 당신은 응답으로이 쓰기 위하여려고하고있다 그래서 받아 들일 수 있을까요? – user299791

+2

어쩌면 http://stackoverflow.com/q/25293045/ – Frank

답변

2

어떻게 이런 일에 대해 :

dat[, user_processed := paste(User, Processed, sep="_")] 
dcast(dat, WeekNumber~user_processed, value.var="Processed", length) 

당신에게 제공합니다

WeekNumber 10001041_1 10001042_0 10001042_1 
1:   33   0   3   2 
2:   43   5   0   0 

샘플 데이터 사용 :

이 좋아, 원하는 출력은 단지`데이터처럼 table``에서 오는
dat <- fread("User Processed WeekNumber 
    1: 10001042   0   33 
     2: 10001042   0   33 
     3: 10001042   1   33 
     4: 10001042   0   33 
     5: 10001042   1   33 
     870: 10001041   1   43 
     871: 10001041   1   43 
     872: 10001041   1   43 
     873: 10001041   1   43 
     874: 10001041   1   43") 

dat <- dat[, V1 := NULL] 
setnames(dat, c("User", "Processed", "WeekNumber")) 
+0

죄송 합니다만 질문에서 요청한 평균값은 어디에서 계산합니까? – user299791

+1

@ user299791 귀하의 질문은 모호합니다. SO 태그의 R 태그에서는 재생 가능한 최소한의 샘플을 해당 출력과 함께 게시해야합니다. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/28481250 – Frank

+0

@ user299791 '길이'대신 '평균'을 사용할 수 있지만 근본적으로 모든 것이 거기에 있다고 생각합니다. 기대되는 결과를 내기 위해서 ... 프랭크로서 나는 당신이 무엇을 기대하는지 100 % 확실하지 않다. – Rentrop