ОК, я смоделировал фрейм данных:
df_credit_status <- data.frame(
grade = sample(
c("A", "B", "C", "D", "E", "F"),
size = 200,
replace = TRUE)
)
И изменил ваш код:
fun_grade <- function(grade) {as
if (grade == "A") {
return("100")
} else if (grade == "B") {
return("80")
} else if (grade == "C") {
return("60")
} else if (grade == "D") {
return("40")
} else if (grade == "E") {
return("20")
} else if (grade == "F") {
return("10")
}
}
df_credit_status$equiv_grade <- sapply(df_credit_status$grade,
FUN = fun_grade)
И получил:
> head(df_credit_status)
grade equiv_grade
1 F 10
2 D 40
3 F 10
4 F 10
5 C 60
6 C 60
Лично я буду сделать это с помощью библиотек tidyverse
:
library(tidyverse)
df_credit_status <- data.frame(
grade = sample(
c("A", "B", "C", "D", "E", "F"),
size = 200,
replace = TRUE)
)
df_credit_status <- df_credit_status %>%
mutate(
equiv_grade = case_when(
grade == "A" ~ "100",
grade == "B" ~ "80",
grade == "C" ~ "60",
grade == "D" ~ "40",
grade == "E" ~ "20",
grade == "F" ~ "10"
)
)
# change the equivalencies above to numbers if you need that
Я использую второй столбец, поэтому информация из оригинала не теряется.
HTH