R 如何使用case_对列进行相应的排序?

R 如何使用case_对列进行相应的排序?,r,dplyr,ranking,case-when,R,Dplyr,Ranking,Case When,我想创建另一列(称为delayGrade),其中来自另一列(averageDelay)的前10%的值(最接近于0)被分配字母“A”,接下来的25%的值被分配为“B”,剩下的值被分配为“C”。我想我可以用一个case_函数来完成这项工作,但不知道该怎么做。有什么想法吗?这是玩具数据框架和解决方案: library(tidyverse) df <- tibble( averageDelay = rnorm(10) ) df %>% mutate( delayGrade

我想创建另一列(称为delayGrade),其中来自另一列(averageDelay)的前10%的值(最接近于0)被分配字母“A”,接下来的25%的值被分配为“B”,剩下的值被分配为“C”。我想我可以用一个case_函数来完成这项工作,但不知道该怎么做。有什么想法吗?

这是玩具数据框架和解决方案:

library(tidyverse)

df <- tibble(
  averageDelay = rnorm(10)
)

df %>%
  mutate(
    delayGrade = case_when(
      averageDelay < quantile(averageDelay, .1)  ~ "A",
      averageDelay < quantile(averageDelay, .35) ~ "B",
      TRUE                                       ~ "C"
    )
  ) %>% 
  arrange(averageDelay) # Not necissary, but improves readability

# A tibble: 10 x 2
   averageDelay delayGrade
          <dbl>      <chr>
 1  -1.57878473          A
 2  -1.00129022          B
 3  -0.34245100          B
 4  -0.08652020          B
 5  -0.05240453          C
 6   0.15732711          C
 7   0.21509389          C
 8   0.34202367          C
 9   0.90296373          C
10   0.90820894          C
库(tidyverse)
df%
变异(
delayGrade=当(
averageDelay<分位数(averageDelay,.1)~“A”,
averageDelay<分位数(averageDelay,.35)~“B”,
真~“C”
)
) %>% 
安排(平均延迟)#不是必需的,但可以提高可读性
#一个tibble:10x2
平均延迟等级
1-1.57878473 A
2-1.00129022 B
3-0.34245100 B
4-0.08652020 B
5-0.05240453摄氏度
60.15732711摄氏度
7 0.21509389摄氏度
80.34202367摄氏度
9 0.90296373摄氏度
10 0.90820894摄氏度