เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ifelse()

ฟังก์ชันที่มีประโยชน์มากอีกตัวหนึ่งคือ ifelse() ซึ่งช่วยให้เขียน if statement ได้ในโค้ดเพียงบรรทัดเดียว และยังทำงานกับ vector ทั้งชุดได้ด้วย!

สมมติว่ามี vector ของราคาหุ้น และต้องการคืนค่า "Buy!" ทุกครั้งที่ apple > 110 และคืนค่า "Do nothing!" ในกรณีอื่น if statement ธรรมดาไม่เพียงพอสำหรับปัญหานี้ แต่ด้วย ifelse() สามารถทำได้ดังนี้:

apple
[1] 109.49 109.90 109.11 109.95 111.03 112.12

ifelse(test = apple > 110, yes = "Buy!", no = "Do nothing!")
[1] "Do nothing!" "Do nothing!" "Do nothing!" "Do nothing!" "Buy!"       
[6] "Buy!"

ifelse() จะประเมิน test เพื่อให้ได้ logical vector จากนั้นแทนที่ค่า TRUE ด้วยสิ่งที่ระบุใน yes และแทนที่ค่า FALSE ด้วยสิ่งที่ระบุใน no

สามารถใช้ data frame stocks ที่เตรียมไว้ให้ได้เลย

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

R ระดับกลางสำหรับการเงิน

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ ifelse() ทดสอบว่า micr มีค่ามากกว่า 60 แต่น้อยกว่า 62 หรือไม่ ถ้าเป็นจริงให้คืนค่า 1 และถ้าเป็นเท็จให้คืนค่า 0 จากนั้นเพิ่มผลลัพธ์นี้ลงใน stocks เป็นคอลัมน์ชื่อ micr_buy
  • ใช้ ifelse() ทดสอบว่า apple มีค่ามากกว่า 117 หรือไม่ ถ้าเป็นจริงให้คืนค่าคอลัมน์ date และถ้าเป็นเท็จให้คืนค่า NA
  • พิมพ์ stocks ออกมา จะเห็นว่าคอลัมน์ date กลายเป็น numeric! เพราะ ifelse() จะตัด attribute ของวันที่ออกก่อนคืนค่า ทำให้กลายเป็น numeric
  • กำหนด class ของคอลัมน์ apple_date ให้เป็น "Date"
  • พิมพ์ stocks อีกครั้ง

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Microsoft test
stocks$micr_buy <- ifelse(test = ___, yes = ___, no = ___)

# Apple test
stocks$apple_date <- ifelse(test = ___, yes = stocks$date, no = NA)

# Print stocks
___

# Change the class() of apple_date.
class(___) <- ___

# Print stocks again
___
แก้ไขและรันโค้ด