[英]Trying to perform a case_when function inside a mutate verb in R
尝试基于旧列创建新列,因此基本 case_when 语句在 sql 中对我有用,但我想在 R 中使用这种类似的 case_when 在通过 mutate 动词进行管道传输时,任何有关如何执行此操作的帮助都会不胜感激。
WHEN [Salary Grade] = "C01"
OR [Salary Grade] = "F03"
OR [Salary Grade] = "P02"
OR [Salary Grade] = "TS1"
THEN "1"
WHEN [Salary Grade] = "C02"
OR [Salary Grade] = "F04"
OR [Salary Grade] = "P03"
OR [Salary Grade] = "TS2"
THEN "2"
WHEN [Salary Grade] = "C03"
OR [Salary Grade] = "F05"
OR [Salary Grade] = "P04"
OR [Salary Grade] = "T04"
THEN "3"
WHEN [Salary Grade] = "C04"
OR [Salary Grade] = "F06"
OR [Salary Grade] = "P05"
OR [Salary Grade] = "T05"
THEN "4"
WHEN [Salary Grade] = "C05"
OR [Salary Grade] = "F07"
OR [Salary Grade] = "S10"
OR [Salary Grade] = "T06"
THEN "5"
WHEN [Salary Grade] = "C06"
OR [Salary Grade] = "F08"
OR [Salary Grade] = "PM4"
THEN "6"
WHEN [Salary Grade] = "C07"
OR [Salary Grade] = "F09"
OR [Salary Grade] = "PM3"
OR [Salary Grade] = "T07"
THEN "7"
WHEN [Salary Grade] = "C08"
OR [Salary Grade] = "F10"
OR [Salary Grade] = "PM2"
OR [Salary Grade] = "S15"
THEN "8"
WHEN [Salary Grade] = "C09"
OR [Salary Grade] = "DIM"
OR [Salary Grade] = "PM1"
OR [Salary Grade] = "S30"
OR [Salary Grade] = "T09"
THEN "9"
WHEN [Salary Grade] = "C10"
OR [Salary Grade] = "S40"
OR [Salary Grade] = "T10"
THEN "10"
WHEN [Salary Grade] = "C11"
OR [Salary Grade] = "PDM"
OR [Salary Grade] = "SMG"
OR [Salary Grade] = "T11"
THEN "11"
WHEN [Salary Grade] = "C12"
OR [Salary Grade] = "T12"
THEN "12"
ELSE "Historical"
END
这是您的前 3 种案例类型的示例。 请注意, TRUE ~ "Historical")
等同于您的ELSE
。
library(dplyr)
Salary_Grade <- c("C01","F03","P02","TS1","C02","F04","P03","TS2","C03","F05","P04","T04")
df <- data.frame(Salary_Grade, stringsAsFactors = FALSE)
df %>%
mutate(value = case_when(Salary_Grade %in% c("C01","F03","P02","TS1") ~ "1",
Salary_Grade %in% c("C02","F04","P03","TS2") ~ "2",
Salary_Grade %in% c("C03","F05","P04","T04") ~ "3",
TRUE ~ "Historical"))
Salary_Grade value
1 C01 1
2 F03 1
3 P02 1
4 TS1 1
5 C02 2
6 F04 2
7 P03 2
8 TS2 2
9 C03 3
10 F05 3
11 P04 3
12 T04 3
使用 case when 不是最佳方式,但如果你真的想要它:
df %>%
mutate(
SalaryBin=case_when(
Salary_Grade %in% c("C01","F03","P02","TS1") ~ "1",
Salary_Grade %in% c("C02","F04","P03","TS2") ~ "2",
# similarly put other conditions
TRUE ~ "Historical"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.