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

如何一步移除数据中pred_ranking和precaution_score的N/A值?

解决方案

先说说你代码里的问题

  1. 最初的写法语法错误:管道符%>%后面必须接函数,不能直接写data[...],管道是把前面的数据传给下一个函数处理,这么写R无法识别。
  2. dplyr尝试里的问题:你的数据中不存在pred_ranking列(从dput结果看,列名是Preseason.Ranking或Post.Season.Ranking),这会导致complete.cases报错;另外ggplot代码里用了未定义的d2对象,肯定运行失败。
  3. 额外问题:precaution_score是字符型,绘图时用离散刻度不合适,建议先转换为数值型。

正确的一步到位写法

假设你要处理的是Preseason.Ranking(如果是其他列,替换成对应名称)和precaution_score列,用dplyr可以这么写:

library(dplyr)

# 读入数据→将"N/A"转为NA→过滤掉指定列有NA的行
data_complete <- read.csv("Spreadsheet.csv") %>%
  na_if("N/A") %>%
  filter(!is.na(Preseason.Ranking), !is.na(precaution_score))

如果需要处理的列较多,用across更高效(需dplyr 1.0.0及以上版本):

data_complete <- read.csv("Spreadsheet.csv") %>%
  na_if("N/A") %>%
  filter(across(c(Preseason.Ranking, precaution_score), ~!is.na(.x)))

顺便修正你的绘图代码

先转换precaution_score的类型,再用处理好的数据绘图:

library(ggplot2)
library(scales)

# 处理数据并转换列类型
data_processed <- read.csv("Spreadsheet.csv") %>%
  mutate(precaution_score = as.numeric(na_if(precaution_score, "N/A"))) %>%
  filter(!is.na(Preseason.Ranking), !is.na(precaution_score))

# 筛选SEC联盟的学校用于绘图
graph_data <- data_processed %>%
  filter(conference == "SEC")

graph2 <- ggplot(graph_data, aes(Preseason.Ranking, precaution_score, color = school)) + 
  geom_point() +
  facet_wrap(~conference, ncol = 2) +
  # 排名是数值型,用连续刻度更合理
  scale_x_continuous(breaks = pretty_breaks(n=2)) +
  scale_y_continuous(breaks = pretty_breaks(n=5)) +
  theme(legend.position="bottom")

graph2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:35