基于员工层次结构规则的条件Ifelse

时间:2019-11-13 11:02:06

标签: r hierarchy

这似乎是一个简单的问题,但我无法解决这个问题。

我有一个数据,一个人可以从同伴那里收到反馈,他可以从他的团队成员或同伴那里得到反馈。如果经理收到团队成员的反馈,则另一列必须为向上作为类别。如果经理已将其分配给其团队成员,则该列必须具有向下;否则,如果该列在与其他经理之间的对等关系中必须具有 Lateral

我的数据如下:

Employee    ReceivedFrom    EmpDirector
Jake         Frazer         Frazer
Smith        Frazer         Frazer
Frazer       Jake           Alister
Drapper      Frazer         Alister

您可以看到 Jake 是从 Frazer 收到的,而 Jake的导演也是 Frazer ,因此向下。另请注意,在下面的最后一行中, Drapper Frazer 都具有相同的主管,但是反馈本身并非来自Director,因此是横向

想要的结果

Employee    ReceivedFrom    EmpDirector   FeedbackType
Jake         Frazer          Frazer        Downward
Smith        Frazer          Frazer        Downward
Frazer       Jake            Alister       Upward
Drapper      Frazer          Alister       Lateral

1 个答案:

答案 0 :(得分:1)

case_when()中的

dplyr可以操纵多个条件语句。使用它之前,您需要创建一个辅助变量,即tmp,以代表ReceivedFrom中人民的领导。

library(dplyr)
df %>%
  mutate(tmp = EmpDirector[match(ReceivedFrom, Employee)],
         FeedbackType = case_when(
           ReceivedFrom == EmpDirector ~ "Downward",
           Employee == tmp ~ "Upward",
           TRUE ~ "Lateral"),
         tmp = NULL) ## you can remove it if you want

#   Employee ReceivedFrom EmpDirector FeedbackType
# 1     Jake       Frazer      Frazer     Downward
# 2    Smith       Frazer      Frazer     Downward
# 3   Frazer         Jake     Alister       Upward
# 4  Drapper       Frazer     Alister      Lateral
相关问题