วิธีค้นหาผลรวมเฉพาะของเวกเตอร์สองตัวใน r


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

วิธีที่ 1: ใช้ Tidyr

 library (tidyr)

#find unique combinations of elements from vector1 and vector2
crossing(vector1, vector2)

วิธีที่ 2: ใช้ data.table

 library (data.table)

#find unique combinations of elements from vector1 and vector2
CJ(vector1, vector2, unique= TRUE ) 

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

ตัวอย่างที่ 1: การค้นหาชุดค่าผสมที่ไม่ซ้ำใครโดยใช้ Tidyr

โค้ดต่อไปนี้แสดงวิธีค้นหาองค์ประกอบที่ไม่ซ้ำกันทั้งหมดระหว่างเวกเตอร์สองตัวใน R โดยใช้ฟังก์ชัน crossing() จากแพ็คเกจ Tidyr :

 library (tidyr)

#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)

#display all unique combinations of region and points
crossing(region, points)

# A tibble: 12 x 2
   region points
      
 1 East 0
 2 East 5
 3 East 10
 4 North 0
 5 North 5
 6 North 10
 7 South 0
 8 South 5
 9South 10
10 West 0
11 West 5
12 West 10

ผลลัพธ์ที่ได้คือกรอบข้อมูลที่แสดงการผสมผสานองค์ประกอบที่เป็นเอกลักษณ์ระหว่างเวกเตอร์ทั้งสอง

เราจะเห็นว่ามีชุดค่าผสมที่ไม่ซ้ำกันถึง 12 ชุด

หากคุณต้องการทราบจำนวนชุดค่าผสมที่ไม่ซ้ำกัน คุณสามารถล้อมฟังก์ชันนี้ด้วยฟังก์ชัน nrow() ได้:

 library (tidyr)

#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)

#display number of unique combinations of region and points
nrow(crossing(region, points))

[1] 12

โปรดทราบว่าฟังก์ชัน crossing() สามารถใช้กับเวกเตอร์มากกว่า 2 ตัวได้

เพียงระบุชื่อของเวกเตอร์ได้มากเท่าที่คุณต้องการให้กับฟังก์ชัน crossing() เพื่อค้นหาจำนวนชุดค่าผสมที่ไม่ซ้ำกันทั้งหมด

ตัวอย่างที่ 2: ค้นหาชุดค่าผสมที่ไม่ซ้ำกันโดยใช้ data.table

รหัสต่อไปนี้แสดงวิธีค้นหาองค์ประกอบที่ไม่ซ้ำกันทั้งหมดระหว่างเวกเตอร์สองตัวใน R โดยใช้ฟังก์ชัน CJ() จากแพ็คเกจ data.table :

 library (data.table)

#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)

#display all unique combinations of region and points
CJ(region, points, unique= TRUE )

    region points
 1: East 0
 2: East 5
 3: East 10
 4: North 0
 5: North 5
 6: North 10
 7: South 0
 8: South 5
 9: South 10
10: West 0
11: West 5
12: West 10

ผลลัพธ์ที่ได้คือกรอบข้อมูลที่แสดงการผสมผสานองค์ประกอบที่เป็นเอกลักษณ์ระหว่างเวกเตอร์ทั้งสอง

โปรดทราบว่าผลลัพธ์ของฟังก์ชัน CJ() สอดคล้องกับผลลัพธ์ของฟังก์ชัน crossing()

ฟังก์ชัน CJ() สามารถใช้กับเวกเตอร์มากกว่า 2 ตัวได้

เพียงระบุชื่อของเวกเตอร์ได้มากเท่าที่คุณต้องการให้กับฟังก์ชัน CJ() เพื่อค้นหาจำนวนชุดค่าผสมที่ไม่ซ้ำกันทั้งหมด

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

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

วิธีนับค่าที่ไม่ซ้ำตามกลุ่มใน R
วิธีเลือกแถวเดี่ยวใน data frame ใน R
วิธีนับค่าที่แตกต่างโดยใช้ dplyr

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

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