基于另一列移除数据框中expected_score大于total_score的值
解决方法
首先注意到你定义数据框时,total_score被误写为tota_score,先修正这个拼写问题,后续操作基于修正后的列名。
方法1:基础R原生实现
直接通过逻辑索引定位并修改expected_score列:
# 修正列名拼写错误 names(df)[names(df) == "tota_score"] <- "total_score" # 将expected_score中大于对应行total_score的值替换为NA df$expected_score[df$expected_score > df$total_score] <- NA
方法2:dplyr管道风格实现
如果习惯使用tidyverse工具链,可以用更简洁的管道写法:
library(dplyr) # 修正列名+处理目标列 df <- df %>% rename(total_score = tota_score) %>% mutate(expected_score = ifelse(expected_score > total_score, NA, expected_score))
处理后效果
完成操作后,expected_score列中原本大于对应行total_score的值(比如第7行的5、第8行的12.5、第11行的16)都会被替换为NA,其余符合要求的值和原有NA均保持不变。
内容的提问来源于stack exchange,提问作者potro
相关产品推荐
相关产品推荐

