R 如何使用case_对列进行相应的排序?
我想创建另一列(称为delayGrade),其中来自另一列(averageDelay)的前10%的值(最接近于0)被分配字母“A”,接下来的25%的值被分配为“B”,剩下的值被分配为“C”。我想我可以用一个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
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摄氏度