用R

用R,r,tableau-api,R,Tableau Api,所以我试图计算员工流动率。一开始看似简单的任务被证明有点挑战性(对我放松点,我是人力资源专业人士) 我可以找到列的计数和总和,但在计算中使用这些值时遇到了困难。我尝试过使用count、length和xtabs函数,但都没有成功。我想我可以把数据分成几个子集,但我不认为这是解决问题的方法 下面是我想要找到的 #Running_terminations <- 因此,在上述样本数据中,截至3月(2015年3月31日)的营业额如下所示: 运行\u终止=(1+1+1)/3=1 在职员工人数=(4+

所以我试图计算员工流动率。一开始看似简单的任务被证明有点挑战性(对我放松点,我是人力资源专业人士)

我可以找到列的计数和总和,但在计算中使用这些值时遇到了困难。我尝试过使用count、length和xtabs函数,但都没有成功。我想我可以把数据分成几个子集,但我不认为这是解决问题的方法

下面是我想要找到的

#Running_terminations <-
因此,在上述样本数据中,截至3月(2015年3月31日)的营业额如下所示:

运行\u终止=(1+1+1)/3=1

在职员工人数=(4+3+4)/3=3.7 注意,只有“活动”状态才计入员工总数

年营业额=(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)}

ma您可以重新调整数据,以统计每月的活动次数和终止次数。代码如下:

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
library(重塑2)

txt使用您可以使用的基本功能

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

rslt你找到了
cumsum
了吗?我没有,我一直在用库马尔的建议来解决这个问题。如何使用cumsum在截止日期之前获得全面的金额?非常感谢!我明天会试试这个,然后回复。当然。很乐意提供帮助。这非常有帮助,我能够将其应用到我的数据中。我现在的问题是,我希望能够将滚动员工人数与常规员工人数(按月)一起绘制,而您提出的解决方案只给了我一个要点。我读到过“妈,我会考虑这个问题,并提出一个新的问题,再次感谢!”
ma <- function(x,n=5){filter(x,rep(1/n,n), sides=2)}
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
rslt <- table(dataSet$Status) / length(unique(dataSet$As.Of))  
rslt["Active"]  
 Active  
3.666667  

rslt["Termination"]  
 Termination  
1  

turnover <- 100 / rslt["Active"]