如何在R语言中创建Role列识别Speaker的Storyteller与Recipient角色
给数据框添加角色列:区分Storyteller与Recipient
可以通过统计Speaker频次结合条件判断来生成Role列,这里提供两种基于dplyr的实现方式:
方法一:先提取高频Speaker再赋值
先统计每个Speaker的出现次数,找到频次最高的那个,再给原数据框的每行匹配对应角色:
library(dplyr) # 提取出现次数最多的Speaker top_speaker <- df %>% count(Speaker, sort = TRUE) %>% # 按频次降序统计 slice(1) %>% # 取频次最高的行 pull(Speaker) # 提取Speaker值 # 添加Role列 df_with_role <- df %>% mutate(Role = ifelse(Speaker == top_speaker, "Storyteller", "Recipient")) # 输出结果 df_with_role
方法二:用窗口函数一步完成
借助add_count函数给每行添加对应Speaker的总频次,再通过判断频次是否为最大值来赋值角色,无需单独提取高频Speaker:
library(dplyr) df_with_role <- df %>% add_count(Speaker) %>% # 新增n列,记录当前Speaker的总出现次数 mutate(Role = ifelse(n == max(n), "Storyteller", "Recipient")) %>% select(-n) # 删除临时的n列 # 输出结果 df_with_role
两种方法都能得到预期结果:
Speaker Role 1 A Storyteller 2 B Recipient 3 A Storyteller 4 A Storyteller 5 C Recipient 6 A Storyteller
内容的提问来源于stack exchange,提问作者Chris Ruehlemann
相关产品推荐
相关产品推荐

