Я пытаюсь создать переменную с условиями для нескольких других переменных.
Например, у меня есть 5 переменных, A
, B
, C
, D
, E
, Они варьируются от 1 до 8.
Я хочу создать новую переменную grade
с условиями ниже.
1) Если какая-либо из переменных (A
до E
) ниже 2 балл будет 1
2) если все переменные больше 3, а любая из переменных находится между 3, 4, оценка будет 2.
3), если все переменных больше 5, оценка будет 3.
Я создаю набор данных test
произвольно.
test<-data.frame(A=c(4,7,4,1,4),
B=c(8,8,6,5,8),
C=c(6,5,6,7,5),
D=c(7,8,7,5,8),
E=c(5,7,8,5,5))
test
В этом случае grade
будет 2,3, 2,1,2.
Я попробовал функцию mutate_at
с функциями vars
и one_of
. Однако, это не вернуло то, что я ожидал.
test<-test%>%mutate_at(
vars(one_of("A","B","C","D","E")),
funs(grade=case_when(. %in% c(1,2)~1,
min(.) %in% c(3,4)~2,
min(.) %in% c(5,6,7,8)~3)))
test
A B C D E A_grade B_grade C_grade D_grade E_grade
1 4 8 6 7 5 NA 3 3 3 3
2 7 8 5 8 7 NA 3 3 3 3
3 4 6 6 7 8 NA 3 3 3 3
4 1 5 7 5 5 1 3 3 3 3
5 4 8 5 8 5 NA 3 3 3 3
Буду признателен за всю вашу помощь.