You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中使用summarise()计算薪资统计值返回NaN及警告如何解决

问题成因
  • 第一个错误是误用levels()函数:levels()仅对因子类型的变量生效,若你的Salary列是字符类型,levels(Salary)会直接返回空值,传给min()、max()、mean()计算时没有有效输入,就会触发你看到的警告和NaN结果。就算Salary是因子类型,直接对levels()返回的结果做数值转换也无法处理原数据中的£和千位分隔符,依然会生成大量缺失值导致计算失败。
  • 第二个错误是未对Salary列做字符清理就直接转数值:原列带有的£符号、千位分隔符,属于非数字字符,不提前删除的话转数值会直接生成NA,无法参与统计计算。
解决方法

先对Salary列做字符清理、转为数值类型后,再做统计计算,完整代码如下:

library(tidyverse)

# 1. 清理Salary列
salaries <- salaries %>%
  mutate(
    # 批量移除£符号和千位分隔符逗号,再转换为数值类型
    Salary = as.numeric(str_remove_all(Salary, "£|,"))
  )

# 2. 计算薪资统计值
global_stats <- salaries %>%
  summarise(
    mean = mean(Salary, na.rm = TRUE),
    min = min(Salary, na.rm = TRUE),
    max = max(Salary, na.rm = TRUE),
    n = n()
  )

参数na.rm = TRUE用于跳过清理过程中可能产生的缺失值,避免计算结果出现NA,你也可以在确认数据无缺失的前提下移除该参数。

内容的提问来源于stack exchange,提问作者Sharjeel shahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:00