簡體   English   中英

如何使用 mutate 根據“如果,那么”條件定義新變量?

[英]How to use mutate to define a new variable based on "if, then" conditions?

例如,假設我有一個像這樣的簡單數據集:

  student numerical_score
1     tom            84.7
2   betty            77.3
3    jose            91.5

我想使用 dplyr 中的 mutate 來創建一個名為“letter_grade”的附加變量,該變量根據“numerical_score”中的值分配更高的等級。 例如,tom 的成績為 B,Betty 的成績為 C+,而 Jose 的成績為 A-。 我可以使用 mutate 基於單個條件創建變量,但我不確定如何在這里執行。 關於如何編寫該代碼的任何提示? 提前致謝。

您可以使用cut / findInterval -

library(dplyr)

df <- df %>%
  mutate(letter_grade = cut(numerical_score, c(0, 40, 60, 80, 90, 95, 100), 
                            c('F', 'D', 'C+', 'B', 'A-', 'A+')))
df

#  student numerical_score letter_grade
#1     tom            84.7            B
#2   betty            77.3           C+
#3    jose            91.5           A-

在這里,我們將 0-40 之間的等級指定為'F' , 40-60 為'D' , 60-80 為'C+'等等。 您可以根據您的確切值更改中斷和labels


另一種選擇是根據case_when中的條件單獨分配每個等級 -

df <- df %>%
  mutate(letter_grade = case_when(numerical_score > 95 ~ 'A+', 
                                  numerical_score > 90 ~ 'A-', 
                                  numerical_score > 80 ~ 'B', 
                                  numerical_score > 60 ~ 'C+', 
                                  numerical_score > 500 ~ 'D', 
                                  TRUE ~ 'F'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM