ตอบ: วิธียุบข้อความตามกลุ่มใน 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