2016-11-29 81 views
1

我目前正在研究一个项目,考察员工流失率。到目前为止,我已经创建了一个表,看起来像下面的示例:R - 按位置计算每月的团队规模总数

library(tidyverse) 

Data <- data.frame(Month = c("Jan", "Feb", "March", "Jan", "Feb", "March"), 
        Location = c("Sheffield", "Sheffield", "Sheffield","London", "London", "London"), 
        Joiners = c(7,3,8,4,9,1), 
        Leavers = c(1,5,9,3,2,5)) %>% 
     mutate(Net_Change = Joiners - Leavers) 

我想通过采取基于位置和月Net_Change列的总和来计算团队规模(按顺序排列)。例如,伦敦2月队的规模应该等于8(1 + 7),而3月队的规模应该等于4(1 + 7-4)。

我已经尝试过使用dplyr'summarize'函数来做这件事,但不成功。如果'tidyverse'方法适用,那将是很棒的。

非常感谢您的帮助!

+2

看来你正在寻找'cumsum()'。 – jazzurro

+1

感谢那 – George

回答

0
Data %>% group_by(Location) %>% mutate(Team_size = cumsum(Net_Change)) 

# Month Location Joiners Leavers Net_Change Team_size 
# (fctr) (fctr) (dbl) (dbl)  (dbl)  (dbl) 
#1 Jan Sheffield  7  1   6   6 
#2 Feb Sheffield  3  5   -2   4 
#3 March Sheffield  8  9   -1   3 
#4 Jan London  4  3   1   1 
#5 Feb London  9  2   7   8 
#6 March London  1  5   -4   4 
+0

谢谢你,太棒了。从来没有见过这种功能,所以这是有帮助的。为了达到这个目的,重要的是行按月排序? – George

+0

@乔治遗憾的回应迟到..不,不需要订购。输出按照数据的顺序显示。我没有执行任何明确的排序。 –

+0

没问题。谢谢你的解决方案完美运作:) – George