ตอบ: วิธีค้นหาค่าที่ใกล้เคียงที่สุดในเวกเตอร์


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อค้นหาค่าที่ใกล้เคียงที่สุดระหว่างองค์ประกอบของเวกเตอร์สองตัวใน R:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

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

ตัวอย่าง: การค้นหาค่าที่ใกล้ที่สุดในเวกเตอร์ในค่า R

สมมติว่าเรามีเวกเตอร์สองตัวต่อไปนี้ใน R:

 #definevectors
vector1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
vector2 <- c(3, 5, 8, 11)

ตอนนี้ สมมติว่าสำหรับแต่ละค่าในเวกเตอร์แรก เราต้องการหาค่าที่ใกล้เคียงที่สุดในเวกเตอร์ที่สอง

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำสิ่งนี้:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

 [1] 3 3 3 3 5 5 8 8 8 11

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • สำหรับค่าแรกของ vector1 (1) ค่าที่ใกล้เคียงที่สุดกับ vector2 คือ 3
  • สำหรับค่าที่สองของ vector1 (2) ค่าที่ใกล้เคียงที่สุดกับ vector2 คือ 3
  • สำหรับค่าที่สามของ vector1 (3) ค่าที่ใกล้เคียงที่สุดกับ vector2 คือ 3
  • สำหรับค่าที่สี่ของ vector1 (4) ค่าที่ใกล้เคียงที่สุดกับ vector2 คือ 3
  • สำหรับค่าที่ห้าของ vector1 (5) ค่าที่ใกล้เคียงที่สุดกับ vector2 คือ 5

และอื่นๆ

หมายเหตุ : วิธีการนี้จะถือว่าค่าของเวกเตอร์ที่สองเพิ่มขึ้นอย่างเคร่งครัด หากคุณยังไม่ได้ดำเนินการ คุณอาจต้องเรียงลำดับเวกเตอร์ตัวที่สองก่อน

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

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

วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R
วิธีเฉลี่ยคอลัมน์ใน R
วิธีรวมคอลัมน์เฉพาะใน R

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

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