วิธีการเขียนคำชี้แจงกรณีใน r (พร้อมตัวอย่าง)


คำสั่ง case คือประเภทของคำสั่งที่วนไปตามเงื่อนไขและส่งกลับค่าเมื่อตรงตามเงื่อนไขแรก

วิธีที่ง่ายที่สุดในการใช้คำสั่ง case ใน R คือการใช้ฟังก์ชัน case_when() จากแพ็คเกจ dplyr :

 library (dplyr)

df %>% 
  mutate(new_column = case_when(
    col1 < 9 ~ ' value1 ',
    col1 < 12 ~ ' value2 ',
    col1 < 15 ~ ' value3 ',
    TRUE ~ ' Great '))

ฟังก์ชันเฉพาะนี้จะดูค่าในคอลัมน์ชื่อ col1 แล้วส่งคืน:

  • value1 ” ถ้าค่าใน col1 น้อยกว่า 9
  • value2 ” ถ้าค่าใน col1 น้อยกว่า 12
  • value3 ” ถ้าค่าใน col2 น้อยกว่า 15
  • value4 ” หากไม่มีเงื่อนไขก่อนหน้านี้เป็นจริง

โปรดทราบว่า TRUE เทียบเท่ากับคำสั่ง “else”

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: คำสั่ง case ใน R

สมมติว่าเรามี data frame ต่อไปนี้ใน R:

 #create data frame
df <- data. frame (player=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 points=c(6, 8, 9, 9, 12, 14, 15, 17, 19, 22))

#view data frame
df

   player points
1 1 6
2 2 8
3 3 9
4 4 9
5 5 12
6 6 14
7 7 15
8 8 17
9 9 19
10 10 22

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเขียนคำสั่ง case ที่สร้างคอลัมน์ใหม่ที่เรียกว่า class ซึ่งค่าจะถูกกำหนดโดยค่าในคอลัมน์ point :

 library (dplyr)

#create new column using case statement
df %>% 
  mutate(class = case_when(
    points < 9 ~ ' Bad ',
    points < 12 ~ ' OK ',
    points < 15 ~ ' Good ',
    TRUE ~ ' Great '))

   player points class
1 1 6 Bad
2 2 8 Bad
3 3 9 OK
4 4 9 OK
5 5 12 Good
6 6 14 Good
7 7 15 Great
8 8 17 Great
9 9 19 Great
10 10 22 Great

คำสั่ง case ดูค่าในคอลัมน์ point แล้วส่งคืน:

  • แย่ ” หากค่าในคอลัมน์คะแนนน้อยกว่า 9
  • ตกลง ” หากค่าในคอลัมน์คะแนนน้อยกว่า 12
  • ดี ” หากค่าในคอลัมน์คะแนนน้อยกว่า 15
  • ดีมาก ” หากไม่มีเงื่อนไขก่อนหน้านี้เป็นจริง

คอลัมน์ใหม่นี้เรียกว่า class เนื่องจากเป็นชื่อที่เราระบุไว้ในฟังก์ชัน mutate()

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีใช้คำสั่ง If ที่มีหลายเงื่อนไขใน R
วิธีเขียนคำสั่ง If Else แบบซ้อนใน R
วิธีเขียนฟังก์ชัน tryCatch() แรกของคุณใน R

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

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