通过 mutate case_when 根据多个条件创建新变量
Create new variable by multiple conditions via mutate case_when
你好想在特定条件下使用 dyplr、mutate 和 case_when.
通过 2 个变量(WHR 和 sexe)创建一个新的 variable/column (WHRcat)
数据:
WHR sexe WHRcat (new variable)
1.5 1
2.8 2
0.2 2
0.3 1
1.1 1
我的代码:
test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & sexe = 1) ~ 1,
(WHR < 1.02 & sexe = 1) ~ 2,
(WHR >= 0.85 & sexe = 2) ~ 3,
(WHR < 0.85 & sexe = 2) ~ 4,
TRUE ~ 0))
虽然不起作用。
错误:
> test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & sexe = 1) ~ 1,
+ (WHR < 1.02 & sexe = 1) ~ 2,
+ (WHR >= 0.85 & sexe = 2) ~ 3,
+ (WHR < 0.85 & sexe = 2) ~ 4,
+ TRUE ~ 0))
Error in WHR >= 1.02 & sexe = 1 : could not find function "&<-"
我做错了什么?
查看这个可行的示例:
#' # case_when is particularly useful inside mutate when you want to
#' # create a new variable that relies on a complex combination of existing
#' # variables
#' starwars %>%
#' select(name:mass, gender, species) %>%
#' mutate(
#' type = case_when(
#' height > 200 | mass > 200 ~ "large",
#' species == "Droid" ~ "robot",
#' TRUE ~ "other"
#' )
#' )
来自 https://github.com/tidyverse/dplyr/blob/master/R/case_when.R
问题在于使用赋值运算符 =
而不是比较 ==
library(dplyr)
test<- test%>%
mutate(WHRcat = case_when((WHR >= 1.02 & sexe == 1) ~ 1,
(WHR < 1.02 & sexe == 1) ~ 2,
(WHR >= 0.85 & sexe == 2) ~ 3,
(WHR < 0.85 & sexe == 2) ~ 4,
TRUE ~ 0))
你好想在特定条件下使用 dyplr、mutate 和 case_when.
通过 2 个变量(WHR 和 sexe)创建一个新的 variable/column (WHRcat)数据:
WHR sexe WHRcat (new variable)
1.5 1
2.8 2
0.2 2
0.3 1
1.1 1
我的代码:
test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & sexe = 1) ~ 1,
(WHR < 1.02 & sexe = 1) ~ 2,
(WHR >= 0.85 & sexe = 2) ~ 3,
(WHR < 0.85 & sexe = 2) ~ 4,
TRUE ~ 0))
虽然不起作用。
错误:
> test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & sexe = 1) ~ 1,
+ (WHR < 1.02 & sexe = 1) ~ 2,
+ (WHR >= 0.85 & sexe = 2) ~ 3,
+ (WHR < 0.85 & sexe = 2) ~ 4,
+ TRUE ~ 0))
Error in WHR >= 1.02 & sexe = 1 : could not find function "&<-"
我做错了什么?
查看这个可行的示例:
#' # case_when is particularly useful inside mutate when you want to
#' # create a new variable that relies on a complex combination of existing
#' # variables
#' starwars %>%
#' select(name:mass, gender, species) %>%
#' mutate(
#' type = case_when(
#' height > 200 | mass > 200 ~ "large",
#' species == "Droid" ~ "robot",
#' TRUE ~ "other"
#' )
#' )
来自 https://github.com/tidyverse/dplyr/blob/master/R/case_when.R
问题在于使用赋值运算符 =
而不是比较 ==
library(dplyr)
test<- test%>%
mutate(WHRcat = case_when((WHR >= 1.02 & sexe == 1) ~ 1,
(WHR < 1.02 & sexe == 1) ~ 2,
(WHR >= 0.85 & sexe == 2) ~ 3,
(WHR < 0.85 & sexe == 2) ~ 4,
TRUE ~ 0))