R语言仅满足特定条件时修改dataframe数值的问题咨询
R语言dplyr按条件修改数值列解决方案
你可以直接调整原if_else内的返回逻辑,满足「L开头行数值统一转为非正、非L开头行保留原值」的需求,修改后代码如下:
library(dplyr) dat <- dat %>% mutate(across(where(is.numeric), ~ if_else(grepl("^L", A), -abs(.), .)))
逻辑说明
grepl("^L", A)沿用原有匹配规则,可准确匹配A列的L和Left两类取值- 匹配成功的行返回
-abs(.):对当前数值取绝对值后加负号,自动实现「正数转负、负数保持不变」的要求 - 匹配失败的行直接返回原值
.,不会对非L开头的行做任何修改
运行后输出的结果完全符合预期:
A B C 1 L -2 -3 2 Right 5 6 3 R 7 -4 4 Left -8 -9
内容的提问来源于stack exchange,提问作者Elizabeth Driskill
相关产品推荐
相关产品推荐

