A:如何在数据框中按组折叠文本


您可以使用以下方法在 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 按组减少文本

以下代码展示了如何使用 R 数据库的Aggregate()函数减少按团队列分组的位置列的文本:

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

  team position
1A GuardGuardForward
2 B GuardForwardCenter

请注意,位置列中的每个文本值都已折叠为单个值,并按团队列中的值进行分组。

示例 2:使用 dplyr 按组减少文本

以下代码演示了如何使用 dplyr 包中的summarise()函数折叠位置列中的文本,并按团队列分组:

 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中查找字符串中的字符位置

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注