2017-03-12 1 views
0

그래서이있다 : 나는이에 도착 할집계 유지하면서 두 개의 독특한 R

Staff Result Date Days 
1  50  2007 4 
1  75  2006 5 
1  60  2007 3 
2  20  2009 3 
2  11  2009 2 

그리고 :

Staff Result Date Days 
1  55  2007 7 
1  75  2006 5 
2  15  2009 5 

내가 직원 ID를 가지고 날짜 고유 할 각 행에서 'Days'와 'Result'를 합산하려고합니다.

R에서이 작업을 수행 할 수 없지만 많은 집계를 수행해야하지만 다른 작업을 계속해야합니다. 결과는 내가 원하는 것입니다.

많은 감사

답변

3

group_by 직원 및 날짜에 있습니다을하고 dplyr 패키지 결과를 요약하는 가장 간단한 방법 :

require(dplyr) 

df <- data.frame(Staff = c(1,1,1,2,2), 
      Result = c(50, 75, 60, 20, 11), 
      Date = c(2007, 2006, 2007, 2009, 2009), 
      Days = c(4, 5, 3, 3, 2)) 

df %>% 
    group_by(Staff, Date) %>% 
    summarise(Result = floor(mean(Result)), 
      Days = sum(Days)) %>% 
    data.frame 

    Staff Date Result Days 
1  1 2006  75 5 
2  1 2007  55 7 
3  2 2009  15 5 
+0

감사합니다. – TheDream

+0

당신은 환영합니다 ... – Codutie

1

할 수 있습니다 두 개의 수식을 사용하여 변수를 다음 mergeaggregate 두 개의 집합체

merge(aggregate(Result ~ Staff + Date, data=df, mean), 
    aggregate(Days ~ Staff + Date, data=df, sum)) 
    Staff Date Result Days 
1  1 2006 75.0 5 
2  1 2007 55.0 7 
3  2 2009 15.5 5 
+0

이것은 또한 고마워요! Codutie가 먼저 대답하여 정답으로 클릭했습니다. – TheDream

1

data.table

library(data.table) 
setDT(df1)[, .(Result = floor(mean(Result)), Days = sum(Days)), .(Staff, Date)] 
# Staff Date Result Days 
#1:  1 2007  55 7 
#2:  1 2006  75 5 
#3:  2 2009  15 5