วิธีการคำนวณความถี่สัมพัทธ์โดยใช้ dplyr
บ่อยครั้งที่คุณอาจต้องการคำนวณความถี่สัมพัทธ์/สัดส่วนของค่าในคอลัมน์หนึ่งหรือหลายคอลัมน์ของกรอบข้อมูลใน R
โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชันต่างๆ ในแพ็คเกจ dplyr บทช่วยสอนนี้แสดงวิธีใช้ฟังก์ชันเหล่านี้เพื่อคำนวณความถี่สัมพัทธ์ในกรอบข้อมูลต่อไปนี้:
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 32, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 32 6 BG 34 7 BF 39
ตัวอย่างที่ 1: ความถี่สัมพัทธ์ของตัวแปร
รหัสต่อไปนี้แสดงวิธีคำนวณความถี่สัมพัทธ์ของแต่ละทีมในกรอบข้อมูล:
library(dplyr) df %>% group_by (team) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 2 x 3 team n freq 1 to 3 0.429 2 B 4 0.571
สิ่งนี้บอกเราว่าทีม A คิดเป็น 42.9% ของแถวทั้งหมดในกรอบข้อมูล ในขณะที่ทีม B คิดเป็น 57.1% ที่เหลือของแถว โปรดทราบว่าเมื่อรวมกันแล้วจะรวมกันได้มากถึง 100%
ที่เกี่ยวข้อง: คู่มือฉบับสมบูรณ์: วิธีจัดกลุ่มและสรุปข้อมูลใน R
ตัวอย่างที่ 2: ความถี่สัมพัทธ์ของตัวแปรหลายตัว
รหัสต่อไปนี้แสดงวิธีคำนวณความถี่สัมพัทธ์ของตำแหน่ง ต่อ ทีม:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 0.667 2 AG 1 0.333 3 BF 1 0.250 4 BG 3 0.750
สิ่งนี้บอกเราว่า:
- 66.7% ของผู้เล่นทีม A อยู่ในตำแหน่ง F
- 33.3% ของผู้เล่นทีม A อยู่ในตำแหน่ง G
- 25.0% ของผู้เล่นทีม A อยู่ในตำแหน่ง F
- 75.0% ของผู้เล่นทีม B อยู่ในตำแหน่ง G
ที่เกี่ยวข้อง: วิธีใช้ Mutate เพื่อสร้างตัวแปรใหม่ใน R
ตัวอย่างที่ 3: แสดงความถี่สัมพัทธ์เป็นเปอร์เซ็นต์
รหัสต่อไปนี้แสดงวิธีการคำนวณความถี่สัมพัทธ์ของตำแหน่งโดยทีม และวิธีการแสดงความถี่สัมพัทธ์เหล่านี้เป็นเปอร์เซ็นต์:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = paste0(round(100 * n/sum(n), 0), ' % ')) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 67% 2 GA 1 33% 3 BF 1 25% 4 BG 3 75%
คุณสามารถค้นหาบทช่วยสอน R เพิ่มเติมได้ ที่นี่