[英]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.