2016-03-15 24 views
-1

我有幾個問題試圖使用多個變量來計算員工流失率。員工流失與R使用多個選定變量

請參閱下面的示例數據。

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

我重塑我的數據用下面的代碼來算,每月端接的活動次數和數量。

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") 

使用這個我能夠將數據集轉換成看起來像這樣的東西。

As Of  Active  Terminations New Hires 
1/2015  4    1    0 
2/2015  3    1    1 
3/2015  4    1    0 

,我能夠做

Running_terminations <- sum(dataSetAgg$Termination)/nrow(dataSetAgg) 
Running_headcount <- sum(dataSetAgg$Active)/nrow(dataSetAgg) 
Annual_turnover <- (Running_terminations/Running_headcount)*12 

下面來計算整體運行成交的我的意思Running_termination,Running_headcount和Annual_turnover描述。

#Running_terminations <- 

應該是(在1月終端)+(以月2終端)... /月#

#Running_headcount <- 

應該是(在1月員工人數)+(在第2個月員工人數)... /月

#Annual_turnover <- 

(運行終端/運行人數)的#* 12

w ^帽子我希望做的是通過指定的變量

例如計算Annual_turnover,

Male_turnover <- 
Male_and_fulltime_turnover <- 
Male_and_female_and_TypeA_and_parttime_turnover <- 

等....

有一個比較簡單的方法來做到這一點?

非常感謝提前。

+1

有沒有29天在2015年2月 – HubertL

+0

您的代碼不會重現你的數據(4月份有效,而不是3月份) – HubertL

+0

謝謝,因爲我手動寫出來都是拼寫錯誤。 – Dima

回答

1

您可以使用sum(condition)計數線where條件= TRUE:

  • 與狀態= '終止' 行數:

    sum(dataSet$Status=='Termination') 
    3 
    
  • 帶有狀態行數='終止'和Gender ='Male':

    sum(dataSet$Status=='Termination' & dataSet$Gender=='Male') 
    1 
    

您還可以使用length()計數的項目數:

  • (唯一)本月數

    length(unique(dataSet$As.Of.Month)) 
    3 
    
+0

我編輯了我的問題以包含我的意思是Running_termination,Running_headcount和Annual_turnover。我嘗試了你的建議,但我似乎得到了NaN的 – Dima

+0

好吧,所以你的代碼適用於Annual_turnover完美工作,並給我準確的總體營業額,但Male_turnover和Male_and_fulltime_turnover的代碼給了我完全相同的值。有什麼建議麼? – Dima

+0

我很確定你的新編輯作品!非常感謝你,我的好先生! – Dima