วิธีสร้างครอสแท็บโดยใช้ dplyr (พร้อมตัวอย่าง)
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อสร้างครอสแท็บโดยใช้ฟังก์ชันจากแพ็คเกจ dplyr และ Tidyr ใน R:
df %>% group_by (var1, v ar2) %>% tally () %>% spread (var1,n)
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่างที่ 1: สร้างครอสแท็บพื้นฐาน
สมมติว่าเรามี data frame ต่อไปนี้ใน R:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'), dots=c(7, 7, 8, 11, 13, 15, 19, 13)) #view data frame df team position points 1 AG 7 2 AG 7 3AF 8 4 AC 11 5 BG 13 6 BF 15 7 BF 19 8 BC 13
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสร้างครอสแท็บสำหรับตัวแปร “ทีม” และ “ตำแหน่ง”:
library (dplyr) library (tidyr) #produce crosstab df %>% group_by (team, position) %>% tally () %>% spread (team, n) # A tibble: 3 x 3 position AB 1 C 1 1 2 F 1 2 3 G 2 1
ต่อไปนี้เป็นวิธีการตีความค่าครอสแท็บ:
- มีผู้เล่น 1 คนที่ครองตำแหน่ง “C” และอยู่ในทีม “A”
- มีผู้เล่น 1 คนที่ครองตำแหน่ง “C” และอยู่ในทีม “B”
- มีผู้เล่น 1 คนที่ครองตำแหน่ง “F” และอยู่ในทีม “A”
- มีผู้เล่น 2 คนที่มีตำแหน่ง “F” และอยู่ในทีม “B”
- มีผู้เล่น 2 คนที่มีตำแหน่ง “G” และอยู่ในทีม “A”
- มีผู้เล่น 1 คนที่ครองตำแหน่ง “G” และอยู่ในทีม “B”
โปรดทราบว่าเราสามารถเปลี่ยนแถวและคอลัมน์ของครอสแท็บได้โดยการเปลี่ยนตัวแปรที่ใช้ในฟังก์ชัน Spread() :
library (dplyr) library (tidyr) #produce crosstab with 'position' along columns df %>% group_by (team, position) %>% tally () %>% spread (position, n) # A tibble: 2 x 4 # Groups: team [2] team CFG 1 A 1 1 2 2 B 1 2 1
ที่เกี่ยวข้อง: วิธีใช้ฟีเจอร์ Spread ใน Tidyr
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันทั่วไปอื่น ๆ ใน dplyr:
วิธีการคำนวณความถี่สัมพัทธ์โดยใช้ dplyr
วิธีเลือกคอลัมน์ตามดัชนีโดยใช้ dplyr
วิธีลบแถวโดยใช้ dplyr