用R计算员工流动率

时间:2016-03-08 04:41:45

标签: r tableau

所以我试图计算员工流动率。最初看似简单的任务证明有点挑战(对我来说很容易,我是人力资源专业人士)。

我可以找到列的计数和总和,但我在计算中使用这些值时遇到问题。我已经尝试过搞乱计数,长度和xtabs功能,但都没有成功。我想我可以将数据分成子集,但我不认为这是去这里的方式。

以下是我想要找到的内容

#Running_terminations <-

应该是(第1个月的终止)+(第2个月的终止)...... /月数

#Running_headcount <-

应该是(第1个月的人数)+(第2个月的人数)...... /月数

#Annual_turnover <-

(运行终止/运行人数)* 12

As Of      Status       Gender    Type
1/31/2015  Termination  Male      A
1/31/2015  Active       Female    A
1/31/2015  Active       Male      B
1/31/2015  Active       Female    B
1/31/2015  Active       Male      A
2/29/2015  Active       Female    A
2/29/2015  Active       Male      B
2/29/2015  Active       Female    B
2/29/2015  New Hire     Male      A
2/29/2015  Termination  Female    A
3/31/2015  Active       Male      B
3/31/2015  Active       Female    B
3/31/2015  Active       Male      A
3/31/2015  Termination  Female    A
3/31/2015  Active       Male      B

因此,在上面的样本数据中,截至3月(2015年3月31日)的运行营业额将如下所示,

Running_terminations = (1 + 1 + 1)/ 3 = 1

Running_headcount = (4 + 3 + 4)/ 3 = 3.7 注意,只有状态&#34;有效&#34;计入人数

Annual_turnover = (1 / 3.7)* 100 = 27%

一旦我掌握了基础知识,我希望能够按性别,类型或两者的性别和类型计算营业额。

非常感谢你阅读这篇文章。

修改

如果有帮助,这就是我在Tableau中进行计算的方法。

Running Terminations (YTD) = zn(WINDOW_AVG((([Termination])),-11,0))
Running Headcount (YTD) = zn(WINDOW_AVG((([Active])),-11,0))
Annual Turnover (YTD) = (ZN(([Running Terminations])/[Running Headcount]))*12

所以我首先计算了一个正在运行的年初至今的周转率,然后乘以12。

我做了一些关于计算运行平均值的阅读,我发现这里有一个用户提示以下功能。

ma <- function(x,n=5){filter(x,rep(1/n,n), sides=2)}

现在我正在尝试将此问题应用于我的问题。

我认为主要的问题是我无法通过&#39; As Of&#39;来分类。日期。另一个例子是,我想制作一个双轴图,每月显示终端和新员工,但我只能获得总数并最终绘制点。我怎样才能每月展示一次?

2 个答案:

答案 0 :(得分:1)

您可以对数据进行重新整形,以计算每月的有效数量和终止数量。这是代码:

library(reshape2)
txt <- "As.Of      Status       Gender    Type
1/31/2015  Termination  Male      A
1/31/2015  Active       Female    A
1/31/2015  Active       Male      B
1/31/2015  Active       Female    B
1/31/2015  Active       Male      A
2/29/2015  Active       Female    A
2/29/2015  Active       Male      B
2/29/2015  Active       Female    B
2/29/2015  New_Hire     Male      A
2/29/2015  Termination  Female    A
3/31/2015  Active       Male      B
3/31/2015  Active       Female    B
3/31/2015  Active       Male      A
3/31/2015  Termination  Female    A
3/31/2015  Active       Male      B"

dataSet <- read.table(textConnection(txt), header=TRUE)
dataSet$As.Of <- as.Date(dataSet$As.Of, format="%m/%d/%y")
dataSet$As.Of.Month <- format(dataSet$As.Of, "%m")

dataSetAgg <- dcast(dataSet, As.Of.Month ~ Status, fun.aggregate = length, value.var="As.Of.Month")
Running_terminations <-  sum(dataSetAgg$Termination)/nrow(dataSetAgg)
Running_headcount  <- sum(dataSetAgg$Active)/nrow(dataSetAgg)
Annual_turnover <- (Running_terminations/Running_headcount)*100

希望这会有所帮助。

答案 1 :(得分:1)

使用基本功能,您可以使用

rslt <- table(dataSet$Status) / length(unique(dataSet$As.Of))  

在Kumar给出的同一数据集上 现在结果是

rslt["Active"]  
 Active  
3.666667  

rslt["Termination"]  
 Termination  
1  

turnover <- 100 / rslt["Active"]