R语言中ifelse输出球队编号而非名称,如何显示原球队名?
解决R中获胜队编号转球队名称的问题
看来你遇到了把数字编号转成实际球队名称的小困扰,我给你几个简单有效的解决思路:
直接调用名称列(如果数据里有的话)
如果你原本的dat数据框里,除了away(客队编号)和home(主队编号),还存着对应的客队名称(比如away_name)和主队名称(比如home_name),那直接修改你的ifelse语句就行:win = ifelse(dat$away_score > dat$home_score, dat$away_name, dat$home_name)这样输出的
win就是直接的球队名称,不用再处理编号。用名称向量映射编号
因为你提到球队是按字母顺序命名后分配的编号,那你可以先创建一个和编号顺序完全对应的球队名称向量(比如编号1对应字母排序第一的球队,以此类推):# 按字母顺序列出6支球队的名称,替换成你实际的球队名 team_names = c("Atlanta Hawks", "Boston Celtics", "Brooklyn Nets", "Charlotte Hornets", "Chicago Bulls", "Cleveland Cavaliers") # 先判断获胜队的编号,再用向量索引转成名称 win_id = ifelse(dat$away_score > dat$home_score, dat$away, dat$home) win = team_names[win_id]这里要注意
team_names的顺序必须和编号分配的字母顺序完全一致,不然会出现对应错误。把编号列转成因子类型
你也可以先把dat里的away和home列转换成因子,指定好编号对应的标签(球队名称),之后再运行原来的判断代码:team_names = c("Atlanta Hawks", "Boston Celtics", "Brooklyn Nets", "Charlotte Hornets", "Chicago Bulls", "Cleveland Cavaliers") # 将编号列转为因子,labels参数对应球队名称 dat$away = factor(dat$away, levels = 1:6, labels = team_names) dat$home = factor(dat$home, levels = 1:6, labels = team_names) # 现在运行原ifelse,得到的就是球队名称 win = ifelse(dat$away_score > dat$home_score, dat$away, dat$home)这种方法的好处是后续再用到
away和home列时,都是显示名称而不是编号,适合后续的数据分析和可视化。
内容的提问来源于stack exchange,提问作者靻岇灛耄�,r;numbers"
相关产品推荐
相关产品推荐

