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