สร้างตัวแปรใหม่ใน r ด้วย mutate() และ case_when()


บ่อยครั้งที่คุณอาจต้องการสร้างตัวแปรใหม่ในกรอบข้อมูลใน R ตามเงื่อนไขบางประการ โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน mutate() และ case_when() จากแพ็คเกจ dplyr

บทช่วยสอนนี้แสดงตัวอย่างต่างๆ ของการใช้ฟังก์ชันเหล่านี้กับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data.frame(player = c('a', 'b', 'c', 'd', 'e'),
                 position = c('G', 'F', 'F', 'G', 'G'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

  player position points rebounds
1 to G 12 5
2 b F 15 7
3 c F 19 7
4 d G 22 12
5th G 32 11

ตัวอย่างที่ 1: สร้างตัวแปรใหม่ตามตัวแปรที่มีอยู่

รหัสต่อไปนี้แสดงวิธีการสร้างตัวแปรใหม่ที่เรียกว่า “ผู้ให้คะแนน” ตามค่าในคอลัมน์คะแนน:

 library(dplyr)

#define new variable 'scorer' using mutate() and case_when()
df %>%
  mutate (scorer = case_when (points < 15 ~ ' low ',
                           points < 25 ~ ' med ',
                           points < 35 ~ ' high '))

  player position points rebounds scorer
1 a G 12 5 low
2 b F 15 7 med
3 c F 19 7 med
4 d G 22 12 med
5th G 32 11 high

ตัวอย่างที่ 2: สร้างตัวแปรใหม่โดยยึดตามตัวแปรที่มีอยู่หลายตัว

รหัสต่อไปนี้แสดงวิธีสร้างตัวแปรใหม่ที่เรียกว่า “ประเภท” ตามค่าในคอลัมน์ผู้เล่นและตำแหน่ง:

 library(dplyr)

#define new variable 'type' using mutate() and case_when()
df %>%
  mutate (type = case_when (player == 'a' | player == 'b' ~ ' starter ',
                            player == 'c' | player == 'd' ~ ' backup ',
                            position == 'G' ~ ' reserve '))

  player position points rebounds type
1 a G 12 5 starter
2 b F 15 7 starter
3 c F 19 7 backup
4 d G 22 12 backup
5th G 32 11 reserve

รหัสต่อไปนี้แสดงวิธีการสร้างตัวแปรใหม่ที่เรียกว่า “valueAdded” ตามค่าของคอลัมน์จุดและรีบาวด์:

 library(dplyr)

#define new variable 'valueAdded' using mutate() and case_when()
df %>%
  mutate (valueAdded = case_when (points <= 15 & rebounds <=5 ~ 2,
                                points <=15 & rebounds > 5 ~ 4,
                                points < 25 & rebounds < 8 ~ 6,
                                points < 25 & rebounds > 8 ~ 7,
                                points >=25 ~ 9))

  player position points rebounds valueAdded
1 to G 12 5 2
2 b F 15 7 4
3c F 19 7 6
4 d G 22 12 7
5th G 32 11 9

แหล่งข้อมูลเพิ่มเติม

วิธีเปลี่ยนชื่อคอลัมน์ใน R
วิธีลบคอลัมน์ใน R
วิธีกรองแถวใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *