【发布时间】:2026-02-07 08:25:01
【问题描述】:
我正在尝试创建具有其他多个变量条件的变量。
例如,我有 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。
我用vars 和one_of 函数尝试了mutate_at 函数。但是,它并没有返回我的预期。
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
感谢您的帮助。
【问题讨论】:
标签: r conditional-statements dplyr