我使用的数据是这样的:
data
Subject Cluster
A 1
B 1
C 2
D 3
E 2
F 1
G 3
H 3
I 4
J 4
K 5
L 6
M 7
N 5
O 3
基于列簇,我想创建一个新的列,叫做Verdict
,如果科目通过,需要补习,或者不及格,它包含注释。
如果受试者在:
*Cluster 1或3,他们失败了
*集群2或5,他们需要补救
*集群4或6或7,他们通过了
最终的数据看起来像这样
data
subject cluster verdict
A 1 Failed
B 1 Failed
C 2 Remedial
D 3 Failed
E 2 Remedial
F 1 Failed
G 3 Failed
H 3 Failed
I 4 Passed
J 4 Passed
K 5 Remedial
L 6 Passed
M 7 Passed
N 5 Remedial
O 3 Failed
我已经尝试过使用简单的代码,如:
data$verdict =
ifelse(data$cluster == 1|data$cluster == 3,'Failed',
ifelse(data$cluster == 2|data$cluster == 5,'Remedial','Passed'))
它起作用了。但我觉得效率不高,特别是当我有大量的集群和/或判决时。有没有更有效的方法?
不要用==
,试试用%in%
,试试用case_when
data %>%
mutate(verdict = case_when(
cluster %in% c(1,3) ~ "Failed",
cluster %in% c(2,5) ~ "Remedial",
TRUE ~ "Passed"
))