วิธีการใช้ฟังก์ชัน n() ใน r (พร้อมตัวอย่าง)
คุณสามารถใช้ฟังก์ชัน n() จากแพ็คเกจ dplyr ใน R เพื่อนับจำนวนการสังเกตในกลุ่ม
ต่อไปนี้เป็นวิธีทั่วไปสามวิธีในการใช้คุณลักษณะนี้ในทางปฏิบัติ:
วิธีที่ 1: ใช้ n() เพื่อนับการสังเกตตามกลุ่ม
df %>%
group_by(group_variable) %>%
summarize(count = n())
วิธีที่ 2: ใช้ n() เพื่อเพิ่มคอลัมน์ที่แสดงการสังเกตตามกลุ่ม
df %>%
group_by(group_variable) %>%
mutate(count = n())
วิธีที่ 3: ใช้ n() เพื่อกรองตามการสังเกตตามกลุ่ม
df %>%
group_by(group_variable) %>%
filter(n() > 15 )
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'C'), points=c(22, 25, 25, 20, 29, 13), assists=c(10, 12, 9, 4, 11, 10), rebounds=c(9, 8, 5, 10, 14, 12)) #view data frame df team points assists rebounds 1 A 22 10 9 2 A 25 12 8 3 to 25 9 5 4 B 20 4 10 5 B 29 11 14 6 C 13 10 12
ตัวอย่างที่ 1: ใช้ n() เพื่อนับการสังเกตตามกลุ่ม
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน n() พร้อมด้วยฟังก์ชัน summarise() เพื่อนับจำนวนการสังเกตต่อ ทีม :
library (dplyr) #count number of observations by team df %>% group_by(team) %>% summarize(count = n()) # A tibble: 3 x 2 team count 1 to 3 2 B 2 3 C 1
จากผลลัพธ์เราจะเห็นได้ว่า:
- ทีม A ปรากฏตัว 3 ครั้ง
- ทีม B ปรากฏตัว 2 ครั้ง
- ทีม C ปรากฏตัว 1 ครั้ง
ตัวอย่างที่ 2: ใช้ n() เพื่อเพิ่มคอลัมน์ที่แสดงการสังเกตตามกลุ่ม
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน n() กับฟังก์ชัน mutate() เพื่อเพิ่มคอลัมน์ในกรอบวันที่ซึ่งมีจำนวนการสังเกตต่อ ทีม :
library (dplyr) #add new column that shows number of observations by team df %>% group_by(team) %>% mutate(count = n()) # A tibble: 6 x 5 # Groups: team [3] team points assists rebounds count 1 to 22 10 9 3 2 to 25 12 8 3 3 to 25 9 5 3 4 B 20 4 10 2 5 B 29 11 14 2 6 C 13 10 12 1
คอลัมน์ใหม่ที่เรียกว่า count มีจำนวนทีมสำหรับแต่ละแถวในกรอบข้อมูล
ตัวอย่างที่ 3: ใช้ n() เพื่อกรองตามการสังเกตตามกลุ่ม
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน n() กับฟังก์ชัน filter() เพื่อกรองกรอบข้อมูลเพื่อแสดงเฉพาะแถวที่ทีมปรากฏมากกว่าหนึ่งครั้ง:
library (dplyr) #filter rows where team count is greater than 1 df %>% group_by(team) %>% filter(n() > 1 ) # A tibble: 5 x 4 # Groups: team [2] team points assists rebounds 1 A 22 10 9 2 A 25 12 8 3 to 25 9 5 4 B 20 4 10 5 B 29 11 14
โปรดทราบว่าเฟรมข้อมูลผลลัพธ์จะมีเฉพาะแถวที่ทีมคือ “A” หรือ “B” เนื่องจากเป็นทีมเดียวที่มีจำนวนมากกว่าหนึ่งทีม
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้ฟังก์ชันทั่วไปอื่นๆ ใน R:
วิธีใช้ฟังก์ชัน cross() ใน dplyr
วิธีใช้ฟังก์ชัน relocate() ใน dplyr
วิธีใช้ฟังก์ชัน Slice() ใน dplyr