在R语言中计算数据集列均值时遇NA错误的技术问询
问题解决方法
报错原因是select(base_salary)返回的是单列数据框,而mean()函数仅接受数值向量作为输入——即便列本身是数值型,传入数据框也会触发该错误。以下是几种可行的解决方式:
- 方法一:用
pull()直接提取列向量(推荐)
ATLANTA = complete_dataset %>% filter(club == "ATL") %>% pull(base_salary) ATL = mean(ATLANTA, na.rm = TRUE) # 加入na.rm处理缺失值 print(ATL)
- 方法二:从数据框中提取向量
如果坚持使用select(),可以通过$或[[从数据框中取出数值向量:
ATLANTA = complete_dataset %>% filter(club == "ATL") %>% select(base_salary) ATL = mean(ATLANTA$base_salary, na.rm = TRUE) # 等价写法:ATL = mean(ATLANTA[[1]], na.rm = TRUE) print(ATL)
- 方法三:管道内直接完成均值计算(更简洁)
ATL = complete_dataset %>% filter(club == "ATL") %>% summarise(avg_salary = mean(base_salary, na.rm = TRUE)) %>% pull(avg_salary) print(ATL)
注意:建议加入
na.rm = TRUE参数,避免因数据中存在缺失值导致均值计算返回NA。
内容的提问来源于stack exchange,提问作者Daniel Isaac Chavez
相关产品推荐
相关产品推荐

