วิธีสร้างครอสแท็บโดยใช้ 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

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

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