R语言如何基于双列条件使用mutate修改指定列数值
错误原因
你原有代码无法运行是存在三处语法和逻辑问题:
ifelse()括号配对错误,逻辑判断表达式被提前闭合- R 中判断值相等需要用双等号
==,单等号=是赋值操作,不能用于逻辑判断 - 需求中要求X3取值为0时触发替换,你代码中写的是X3等于1的判断,和需求不符
正确实现代码
常规写法(对应你原有写法的修正版)
library(dplyr) DF <- DF %>% mutate( X1 = ifelse(is.na(X1) & X3 == 0, 0, X1), X2 = ifelse(is.na(X2) & X3 == 0, 0, X2) )
批量处理写法(适用于需要修改多列的场景)
如果后续要修改的列不止X1、X2,可使用across()函数批量处理,避免重复写冗余代码:
DF <- DF %>% mutate( # c()里填入所有需要执行替换规则的列名 across(c(X1, X2), ~ifelse(is.na(.x) & X3 == 0, 0, .x)) )
上面的代码和常规写法执行效果完全一致。
内容的提问来源于stack exchange,提问作者Cecmel
相关产品推荐
相关产品推荐

