วิธีปรับรูปร่างข้อมูลระหว่างรูปแบบกว้างและยาวใน r


กรอบข้อมูลใน R สามารถแสดงใน รูปแบบกว้างหรือยาว ได้

ขึ้นอยู่กับวัตถุประสงค์ของคุณ คุณอาจต้องการให้กรอบข้อมูลอยู่ในรูปแบบเฉพาะเหล่านี้

วิธีที่ง่ายที่สุดในการปรับรูปร่างข้อมูลระหว่างรูปแบบเหล่านี้คือการใช้สองฟังก์ชันต่อไปนี้จากแพ็คเกจ Tidyr ใน R:

  • pivot_longer() : เปลี่ยนรูปร่างบล็อกข้อมูลจากรูปแบบกว้างเป็นรูปแบบยาว
  • pivot_wider() : เปลี่ยนรูปร่างบล็อกข้อมูลจากรูปแบบยาวเป็นรูปแบบกว้าง

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

ตัวอย่างที่ 1: ปรับรูปร่างข้อมูลจากกว้างไปเป็นยาว

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งขณะนี้อยู่ในรูปแบบกว้าง:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
                 year1=c(12, 15, 19, 19),
                 year2=c(22, 29, 18, 12))

#view data frame
df

  player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12

เราสามารถใช้ฟังก์ชัน pivot_longer() เพื่อหมุนกรอบข้อมูลนี้ให้อยู่ในรูปแบบยาว:

 library (tidyr)

#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
                    names_to=' year ',
                    values_to=' points ')

# A tibble: 8 x 3
  player year points
      
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12

โปรดทราบว่าขณะนี้ชื่อคอลัมน์ year1 และ year2 ถูกใช้เป็นค่าในคอลัมน์ใหม่ที่เรียกว่า “ปี” และค่าจากคอลัมน์เดิมเหล่านั้นจะถูกวางไว้ในคอลัมน์ใหม่ที่เรียกว่า “จุด”

ผลลัพธ์ที่ได้คือกรอบข้อมูลที่ยาว

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน pivot_longer() ได้ที่นี่

ตัวอย่างที่ 2: ปรับรูปร่างข้อมูลจากแบบยาวเป็นแบบกว้าง

สมมติว่าเรามี data frame ต่อไปนี้ใน R ซึ่งขณะนี้อยู่ในรูปแบบยาว:

 #create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
                 year=rep(c(1, 1, 2, 2), times= 2 ),
                 stat=rep(c('points', 'assists'), times= 4 ),
                 amount=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4

เราสามารถใช้ฟังก์ชัน pivot_wider() เพื่อหมุนกรอบข้อมูลนี้เป็นรูปแบบกว้าง:

 library (tidyr)

#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)

# A tibble: 4 x 4
  player year points assists
         
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4

โปรดทราบว่าตอนนี้ค่าในคอลัมน์ สถิติ ถูกใช้เป็นชื่อคอลัมน์ และค่าในคอลัมน์ จำนวน จะถูกใช้เป็นค่าของเซลล์ในคอลัมน์ใหม่เหล่านี้

ผลลัพธ์ที่ได้คือบล็อกข้อมูลขนาดใหญ่

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน pivot_wider() ได้ที่นี่

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

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

วิธีนับค่าที่ไม่ซ้ำตามกลุ่มใน R
วิธีนับค่าที่ไม่ใช่ NA ใน R
วิธีสร้างตารางความถี่สัมพัทธ์ใน R

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

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