使用Filter筛选分组计算均值与标准差的代码错误排查
问题分析与修正方案
核心错误原因:
filter(PLAYERS == '1' & PLAYERS == '2')存在逻辑矛盾——单个样本的PLAYERS字段不可能同时等于'1'和'2',这会导致筛选结果为空,后续分组计算自然报错。修正后的代码:
可以通过两种方式实现正确筛选:- 使用逻辑或运算符
|:
filter(PLAYERS == '1' | PLAYERS == '2') %>% group_by(PLAYERS) %>% summarise(mean_playingtime = mean(PLAYINGTIME, na.rm = TRUE), sd_playingtime = sd(PLAYINGTIME, na.rm = TRUE))- 使用
%in%运算符(更简洁,适合多值筛选场景):
filter(PLAYERS %in% c('1', '2')) %>% group_by(PLAYERS) %>% summarise(mean_playingtime = mean(PLAYINGTIME, na.rm = TRUE), sd_playingtime = sd(PLAYINGTIME, na.rm = TRUE))- 使用逻辑或运算符
额外优化建议:原代码中
summarise的列名mean_soccer和sd_soccer表述不准确(分组包含不踢足球的人群),改成mean_playingtime和sd_playingtime更贴合数据含义。
内容的提问来源于stack exchange,提问作者user19463181
相关产品推荐
相关产品推荐

