2017-11-16 13 views
-1

別の列(averageDelay)の値の上位10%(averageDelay)に文字 'A'が割り当てられ、次の25% 'B'が残りの ' C '。私はcase_when関数を使ってそのようにすることができると思ったが、それをやり遂げる方法はわからなかった。何か案は?ここでcase_whenを使用して列をランク付けする方法は?

答えて

0

は、おもちゃのデータフレームとソリューションです:

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 
+0

はあなたに感謝します!それは完全に動作します – Saskewan

+0

@サスケワンあなたは大歓迎です。チェックマークをクリックして受け付けますか? –

関連する問題