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

如何用单行R代码将数据框中>0的值转0、=0的值转1?

解决数据框值替换的单行最优方案

你的问题出在两次across的操作逻辑上:第一次把所有大于0的值替换为0后,第二次又把所有等于0的值(包括刚替换过来的0)都换成1,最终非NA值全变成1,不符合预期。需要在单次遍历中完成所有判断,避免覆盖。

最简单行代码(两种方式可选)

方式一:利用逻辑值转数值(最简洁)

逻辑值TRUE转数值是1,FALSE是0,NA保持不变,刚好匹配你的需求:

df1 <- df %>% mutate(across(c(cc, bb, dd), ~1 * (.x == 0)))

方式二:用ifelse分层判断(更直观)

如果需要更清晰的逻辑展示,可以嵌套ifelse:

df1 <- df %>% mutate(across(c(cc, bb, dd), ~ifelse(.x > 0, 0, ifelse(.x == 0, 1, .x))))

验证结果

处理后的数据框完全符合预期:

  • 原大于0的值→0
  • 原等于0的值→1
  • NA保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:53:10