R 创建具有范围的列

R 创建具有范围的列,r,R,我的数据集是客户流失建模: 我希望创建一个名为c_rating的专栏,范围如下:(=780-“优秀”) chorn使用mutate()和case\u when() 库(tidyverse) 搅拌尼古拉斯·拉托的回答很好。另一种方法是首先创建一个用户定义的函数,然后使用lappy()。这里有一个例子 churn <- read.csv("Churn_Modeling.csv") churn$CreditScore <- as.numeric(churn$Credi

我的数据集是客户流失建模:

我希望创建一个名为c_rating的专栏,范围如下:(=780-“优秀”)

chorn使用mutate()和case\u when()

库(tidyverse)

搅拌尼古拉斯·拉托的回答很好。另一种方法是首先创建一个用户定义的函数,然后使用
lappy()
。这里有一个例子

churn <- read.csv("Churn_Modeling.csv")

churn$CreditScore <- as.numeric(churn$CreditScore)

C_Rating = function(score){
  if (score < 500) 
    rating = "Very Poor"
  else if (score >= 500 & score <= 600)
    rating = "Poor"
  else if (score >= 601 & score <= 660)
    rating = "Fair"
  else if(score >= 661 & score <= 780)
    rating = "Good"
  else
    rating = "Excellent"
  
  return(rating)

}

churn$c_rating = churn$CreditScore %>% lapply(C_Rating)

chorn库不需要使用引号,
library(tidyverse)
工作正常。您的
cut
函数有8个断点,但只有5个标签。对于n个断点,您应该有n-1个标签。感谢您指出这一点。删除我的错误评论。
churn <- read.csv("Churn_Modeling.csv")
churn$CreditScore <- as.numeric(churn$CreditScore)
class(churn$CreditScore)
churn$c_rating <- cut(churn$CreditScore, c(-Inf, 500, 600, 601, 660, 661, 780, Inf),
                      levels=c('<=500', '500-600', '601-660', '661-780', '>780'))

churn$c_rating
library(tidyverse)

churn <- read.csv("Churn_Modeling.csv")
churn<-churn %>% mutate(c_rating=case_when(CreditScore<500~"very poor", 
                                           CreditScore>=500 & CreditScore<=600~"poor", 
                                           CreditScore>=601 & CreditScore<=660~"fair", 
                                           CreditScore>=661 & CreditScore<=780~"good", 
                                           CreditScore> 780 ~ "excellent"))
churn <- read.csv("Churn_Modeling.csv")

churn$CreditScore <- as.numeric(churn$CreditScore)

C_Rating = function(score){
  if (score < 500) 
    rating = "Very Poor"
  else if (score >= 500 & score <= 600)
    rating = "Poor"
  else if (score >= 601 & score <= 660)
    rating = "Fair"
  else if(score >= 661 & score <= 780)
    rating = "Good"
  else
    rating = "Excellent"
  
  return(rating)

}

churn$c_rating = churn$CreditScore %>% lapply(C_Rating)