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

R语言如何对比不同列数值 判断学生Grade2成绩较Grade1是否提升

R语言实现不同列的数值增减校验方法

你提供的测试数据中Grade1、Grade2默认是字符类型,需要先转换为数值类型再做比较,以下是不同实现方案:

测试数据构造

df = data.frame(Grade1 = c("5","1","7","6"), 
            Grade2 = c("4", "5", "10", "10"))
rownames(df) = c("StudentA","StudentB","StudentC","StudentD")

方法1:基础R实现

# 转换为数值类型
df$Grade1 <- as.numeric(df$Grade1)
df$Grade2 <- as.numeric(df$Grade2)
# 新增列标记Grade2是否高于Grade1
df$is_Grade2_higher <- df$Grade2 > df$Grade1
# 可选:新增列计算具体分差
df$grade_diff <- df$Grade2 - df$Grade1

运行后输出的df结果如下:

Grade1Grade2is_Grade2_highergrade_diff
StudentA54FALSE-1
StudentB15TRUE4
StudentC710TRUE3
StudentD610TRUE4

如果需要直接筛选出成绩提升的学生,可加一行代码:

higher_student <- df[df$is_Grade2_higher, ]

方法2:dplyr包实现(适合tidyverse生态用户)

library(dplyr)
df <- df %>%
  mutate(
    # 转换数值类型
    Grade1 = as.numeric(Grade1),
    Grade2 = as.numeric(Grade2),
    # 校验增减
    is_Grade2_higher = Grade2 > Grade1,
    grade_diff = Grade2 - Grade1
  )
# 筛选成绩提升的学生
higher_student <- df %>% filter(is_Grade2_higher)

注意事项

  • 做数值比较前务必确认列的类型为数值型,字符型比较会按照ASCII码排序得到错误结果
  • 如果数据中存在非数值的异常字符,转换时会生成NA,可添加na.rm = TRUE参数在计算时忽略空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:09:03