ฉันมีชุดข้อมูลต่อไปนี้ 'ข้อมูล':
A1 A2 A3 A4 A5
case1 1234 2234 223 4455 7334
case2 1254 2234 200
case3 1234 9234
case4 1274 5234 228 4655 2534
case5 1234 2634 273 7455
แต่ละแถวแสดงถึงกรณีและปัญหา และแต่ละคอลัมน์แสดงถึงแอตทริบิวต์รหัสสำหรับกรณีนั้น โดยที่แต่ละกรณีสามารถมีรหัสได้หลายรหัสหรือไม่มีรหัสเลย ไม่มีกรณีใดที่สามารถมีรหัสเดียวกันได้หลายอินสแตนซ์
สิ่งสำคัญอีกอย่างคือแต่ละรหัสสามารถเป็นตัวเลข 3 หรือ 4 หลักได้ และรหัส 4 หลักจะเป็นรหัสลูกของรหัส 3 หลัก ตัวอย่างเช่น '123' จะเป็นโค้ดที่กว้างกว่า '1234' '4' หมายถึงรหัส '123' ประเภทที่เฉพาะเจาะจงมากขึ้น
ฟังก์ชั่นดั้งเดิมของฉันในการดึงเคสที่มีรหัส '1234' คือ
dataf <- filter(data, A1:A5 == 1234)
แต่คำสั่งพยายามที่จะประเมินด้วยคำสั่ง & แทนที่จะเป็นคำสั่ง OR ซึ่งไม่ใช่สิ่งที่ฉันกำลังมองหา
ตอนนี้ฉันกำลังกรองดังนี้:
dataf <- filter(data, A1 == 1234 | A2 == 1234 | A3 == 1234 | A4 == 1234 | A5 == 1234)
ซึ่งทำงานได้ดีกับโค้ดเฉพาะโค้ดเดียว แต่ปริมาณการพิมพ์หากฉันต้องการกรองโค้ดเพิ่มเติมอาจเป็นเรื่องต้องห้าม
ท้ายที่สุด สิ่งที่ฉันต้องการทำคือค้นหาคอลัมน์ทั้งหมด A1:A5 สำหรับกรณีใดๆ ที่มีรหัสตรงกับค่าใดๆ ในช่วง
123:150
or
1230:1500
เนื่องจากการสืบค้นทั้งสองช่วงนี้จะส่งคืนกรณีที่ตรงกับอินสแตนซ์ใดๆ ของทั้งรหัสหลักและรหัสลูก