R语言按组计算行数:胜率计算分母获取失败问题排查
问题解决方法
你用nrow(favorite_win)算分母没结果的原因是:nrow()是用来统计数据框的行数的,而favorite_win是单个列(向量),对向量调用nrow()会返回NULL,自然得不到有效数值。
修正分母计算的两种方式
- 用dplyr内置的
n()函数,它在分组环境下会直接返回当前组的行数:
games_by_spread <- df %>% group_by(spread_favorite) %>% summarise(games = n())
- 或者用
length(favorite_win),因为每个分组里的favorite_win向量长度就是该组的总比赛数:
games_by_spread <- df %>% group_by(spread_favorite) %>% summarise(games = length(favorite_win))
更高效的一步计算胜率
没必要分开计算胜场和总场次,直接在一个管道里完成所有计算:
win_percentage_by_spread <- df %>% group_by(spread_favorite) %>% summarise( wins = sum(favorite_win), total_games = n(), win_percentage = wins / total_games )
这样直接得到每个spread_favorite分组的胜场数、总场次和胜率,一步到位更简洁。
内容的提问来源于stack exchange,提问作者Abartel
相关产品推荐
相关产品推荐

