Sas: ความแตกต่างระหว่าง find และ index


คุณสามารถใช้ฟังก์ชัน FIND และ INDEX ใน SAS เพื่อส่งคืนตำแหน่งของอักขระตัวแรกของสตริงย่อยที่ปรากฏภายในสตริง

ความแตกต่างระหว่างฟังก์ชันเหล่านี้ก็คือ ฟังก์ชัน FIND ช่วยให้คุณสามารถทำสองสิ่งที่ฟังก์ชัน INDEX ไม่สามารถทำได้:

  • FIND ช่วยให้คุณทำการค้นหาโดยไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • FIND ช่วยให้คุณระบุตำแหน่งเริ่มต้นสำหรับการค้นหา

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงความแตกต่างระหว่างฟังก์ชัน FIND และ INDEX ในทางปฏิบัติกับชุดข้อมูลต่อไปนี้ใน SAS ที่มีคอลัมน์ประโยค:

 /*create dataset*/
data original_data;
    input sentence $40. ;
    datalines ;
A pig is my favorite animal
My name is piglet
Pigs are so cute
Here is a baby pig
His name is piggy
;
run ;

/*view dataset*/
proc print data = original_data; 

ตัวอย่างที่ 1: การใช้ FIND และ INDEX โดยไม่มีความแตกต่าง

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน FIND และ INDEX เพื่อค้นหาตำแหน่งของสตริงย่อย “pig” ที่เกิดขึ้นครั้งแรกในคอลัมน์ นิพจน์ :

 /*find position of first occurrence of 'pig' in phrase column*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'pig');
    index_pig = index (phrase, 'pig');
run ;

/*view results*/
proc print data = new_data;

โปรดทราบว่าฟังก์ชัน FIND และ INDEX จะส่งกลับผลลัพธ์ที่เหมือนกันทุกประการ

คอลัมน์ find_pig และ index_pig แสดงตำแหน่งของสตริงย่อย “pig” ที่เกิดขึ้นครั้งแรกในคอลัมน์ วลี

ตัวอย่างที่ 2: การใช้ FIND และ INDEX ด้วยการค้นหาที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน FIND และ INDEX เพื่อค้นหาตำแหน่งของคำว่า “PIG” ที่เกิดขึ้นครั้งแรกในคอลัมน์ นิพจน์ :

 /*find position of first occurrence of 'PIG' in phrase column*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'PIG', 'i');
    index_pig = index (phrase, 'PIG');
run ;

/*view results*/
proc print data =new_data;

การใช้ตัวแก้ไข “i” ในฟังก์ชัน FIND ทำให้เราสามารถค้นหาสตริงย่อย “PIG” ในคอลัมน์วลีโดยไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้

อย่างไรก็ตาม ฟังก์ชัน INDEX ไม่สามารถดำเนินการค้นหาโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้ ดังนั้นจึงส่งคืน 0 สำหรับแต่ละแถวเนื่องจากไม่มีสตริงย่อยตัวพิมพ์ใหญ่ “PIG” ในประโยคใดๆ

ตัวอย่างที่ 3: การใช้ FIND และ INDEX กับตำแหน่งเริ่มต้นที่เฉพาะเจาะจง

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน FIND เพื่อค้นหาสตริงย่อย “pig” ในคอลัมน์ วลี โดยเริ่มต้นที่ตำแหน่ง 5 ในขณะที่ฟังก์ชัน INDEX ไม่สามารถใช้ตำแหน่งเริ่มต้นที่เฉพาะเจาะจงได้เลย:

 /*find position of first occurrence of 'pig' in phrase column starting at position 5*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'pig', 5 );
    index_pig = index (phrase, 'pig');
run ;

/*view results*/
proc print data = new_data;

ฟังก์ชัน find_pig ค้นหาสตริงย่อย ‘pig’ โดยเริ่มจากตำแหน่งที่ 5 ของคอลัมน์ วลี

ฟังก์ชัน index_pig เพียงค้นหาสตริงย่อย “pig” ที่ใดก็ได้ในคอลัมน์ วลี เนื่องจากไม่สามารถระบุตำแหน่งเริ่มต้นสำหรับการค้นหาได้

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้ฟังก์ชันทั่วไปอื่นๆ ใน SAS:

วิธีใช้ฟังก์ชัน SUBSTR ใน SAS
วิธีใช้ฟังก์ชัน COMPRESS ใน SAS
วิธีใช้ฟังก์ชัน COALESCE ใน SAS

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

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