วิธีใช้ฟังก์ชัน ntile() ใน dplyr (พร้อมตัวอย่าง)


คุณสามารถใช้ฟังก์ชัน ntile() จากแพ็คเกจ dplyr ใน R เพื่อแบ่งเวกเตอร์อินพุตออกเป็น n bins

ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

ไนไทล์(x, n)

ทอง:

  • x : เวกเตอร์อินพุต
  • n : จำนวนช่อง

หมายเหตุ : ขนาดถังอาจแตกต่างกันได้ถึง 1 ขนาด

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

ตัวอย่างที่ 1: ใช้ ntile() กับเวกเตอร์

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน ntile() เพื่อแบ่งเวกเตอร์ที่มี 11 องค์ประกอบออกเป็น 5 กลุ่มที่แตกต่างกัน:

 library (dplyr)

#createvector
x <- c(1, 3, 4, 6, 7, 8, 10, 13, 19, 22, 23)

#break up vector into 5 buckets
ntile(x, 5)

 [1] 1 1 1 2 2 3 3 4 4 5 5

จากผลลัพธ์ เราจะเห็นว่าแต่ละองค์ประกอบของเวกเตอร์ดั้งเดิมถูกวางไว้ในหนึ่งในห้าถัง

ค่าที่น้อยที่สุดถูกกำหนดให้กับบัคเก็ต 1 ในขณะที่ค่าที่ใหญ่ที่สุดถูกกำหนดให้กับบัคเก็ต 5

ตัวอย่างเช่น:

  • ค่าที่น้อยที่สุดของ 1, 3 และ 4 ถูกกำหนดให้กับที่เก็บข้อมูล 1
  • ค่าที่ใหญ่ที่สุด 22 และ 23 ถูกกำหนดให้กับที่เก็บข้อมูล 5

ตัวอย่างที่ 2: การใช้ ntile() กับกรอบข้อมูล

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ที่แสดงคะแนนที่ทำโดยผู้เล่นบาสเกตบอลที่แตกต่างกัน:

 #create data frame
df <- data. frame (player=LETTERS[1:9],
                 points=c(12, 19, 7, 22, 24, 28, 30, 19, 15))

#view data frame
df

  player points
1 to 12
2 B 19
3 C 7
4 D 22
5 E 24
6 F 28
7 G 30
8:19 a.m.
9 I 15

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน ntile() เพื่อสร้างคอลัมน์ใหม่ในกรอบข้อมูลที่กำหนดผู้เล่นแต่ละคนให้กับหนึ่งในสามที่เก็บข้อมูล ตามคะแนนที่ทำได้:

 library (dplyr)

#create new column that assigns players into buckets based on points
df$bucket <- ntile(df$points, 3)

#view updated data frame
df

  player points bucket
1 to 12 1
2 B 19 2
3 C 7 1
4 D 22 2
5 E 24 3
6 F 28 3
7 G 30 3
8:19 2
9 I 15 1

คอลัมน์ ที่เก็บข้อมูล ใหม่จะกำหนดค่าระหว่าง 1 ถึง 3 ให้กับผู้เล่นแต่ละคน

ผู้เล่นที่มีคะแนนต่ำสุดจะได้รับค่า 1 และผู้เล่นที่มีคะแนนสูงสุดจะได้รับค่า 3

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

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

วิธีใช้ฟังก์ชัน cross() ใน dplyr
วิธีใช้ฟังก์ชัน relocate() ใน dplyr
วิธีใช้ฟังก์ชัน Slice() ใน dplyr

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

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