R语言如何使用另一数据框的列值补全当前数据框的球队全称
实现方案
方案1:手动映射补全(推荐,准确率100%)
英超球队常用简称固定,手动构造映射表即可无错误完成补全,代码如下:
# 构造简称到完整队名的映射关系 team_mapping <- c( "Blackburn" = "Blackburn Rovers", "Bolton" = "Bolton Wanderers", "Manchester Utd" = "Manchester United", "Newcastle Utd" = "Newcastle United", "QPR" = "Queens Park Rangers", "Tottenham" = "Tottenham Hotspur", "West Brom" = "West Bromwich Albion", "Wolves" = "Wolverhampton Wanderers" ) # 补全table_1的Team字段 table_1_fixed <- table_1 %>% mutate(Team = dplyr::recode(Team, !!!team_mapping)) # 校验匹配结果,返回20代表所有球队都和color_table的完整队名匹配成功 sum(table_1_fixed$Team %in% color_table$Team)
方案2:模糊匹配自动补全
如果不想手动维护映射表,可以用字符串编辑距离做模糊匹配,代码如下:
# 未安装stringdist包先执行安装 # install.packages("stringdist") library(stringdist) table_1_fuzzy <- table_1 %>% mutate( Team = color_table$Team[amatch( x = Team, table = color_table$Team, maxDist = 5, # 可根据匹配结果调整允许的最大编辑距离 method = "lv" )] )
注意:模糊匹配需要调整
maxDist参数保证匹配准确性,球队名差异较大时可能出现匹配错误,优先推荐方案1。
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

