ตอบ: วิธียุบข้อความตามกลุ่มใน data frame


คุณสามารถใช้วิธีการต่อไปนี้เพื่อยุบข้อความตามกลุ่มในกรอบข้อมูลใน R:

วิธีที่ 1: ลดข้อความตามกลุ่มโดยใช้ Base R

 aggregate(text_var ~ group_var, data=df, FUN=paste, collapse='')

วิธีที่ 2: ลดข้อความตามกลุ่มโดยใช้ dplyr

 library (dplyr)

df %>%
  group_by(group_var) %>%
  summarize(text=paste(text_var, collapse=''))

วิธีที่ 3: ลดข้อความตามกลุ่มโดยใช้ data.table

 library (data.table)

dt <- as. data . table (df)

dt[, list(text_var=paste(text_var, collapse='')), by=group_var]

บทช่วยสอนนี้จะอธิบายวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 position=c('Guard', 'Guard', 'Forward',
                            'Guard', 'Forward', 'Center'))

#view data frame
df

  team position
1A Guard
2 A Guard
3 A Forward
4 B Guard
5B Forward
6B Center

ตัวอย่างที่ 1: ลดข้อความตามกลุ่มโดยใช้ Base R

รหัสต่อไปนี้แสดงวิธีลดข้อความของคอลัมน์ ตำแหน่ง ซึ่งจัดกลุ่มตามคอลัมน์ ทีม โดยใช้ฟังก์ชัน Aggregate() ของฐานข้อมูล R:

 #collapse position values by team 
aggregate(position ~ team, data=df, FUN=paste, collapse='')

  team position
1A GuardGuardForward
2 B GuardForwardCenter

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

ตัวอย่างที่ 2: ลดข้อความตามกลุ่มโดยใช้ dplyr

รหัสต่อไปนี้แสดงวิธีการยุบข้อความในคอลัมน์ ตำแหน่ง โดยจัดกลุ่มตามคอลัมน์ ทีม โดยใช้ฟังก์ชัน summarise() จากแพ็คเกจ dplyr:

 library (dplyr)

#collapse position values by team
df %>%
  group_by(group_var) %>%
  summarize(text=paste(text_var, collapse=''))

# A tibble: 2 x 2
  team text              
                
1A GuardGuardForward 
2 B GuardForwardCenter

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

ตัวอย่างที่ 3: ลดข้อความตามกลุ่มโดยใช้ data.table

รหัสต่อไปนี้แสดงวิธีการยุบข้อความในคอลัมน์ ตำแหน่ง ซึ่งจัดกลุ่มตามคอลัมน์ ทีม โดยใช้ฟังก์ชันในแพ็คเกจ data.table:

 library (data.table)

#convert data frame to data table
dt <- as. data . table (df)

#collapse position values by team
dt[, list(text_var=paste(text_var, collapse='')), by=group_var]

   team position
1: A GuardGuardForward
2: B GuardForwardCenter

ค่าข้อความแต่ละค่าในคอลัมน์ ตำแหน่ง ถูกยุบเป็นค่าเดียวโดยจัดกลุ่มตามค่าในคอลัมน์ ทีม

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

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

วิธีเลือกคอลัมน์ที่มีสตริงเฉพาะใน R
วิธีลบอักขระออกจากสตริงใน R
วิธีค้นหาตำแหน่งอักขระในสตริงใน R

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

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