这似乎是一个简单的问题,但我无法解决这个问题。
我有一个数据,一个人可以从同伴那里收到反馈,他可以从他的团队成员或同伴那里得到反馈。如果经理收到团队成员的反馈,则另一列必须为向上作为类别。如果经理已将其分配给其团队成员,则该列必须具有向下;否则,如果该列在与其他经理之间的对等关系中必须具有 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
答案 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