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

如何将数据框中大于0的数值替换为present、0替换为absent?

解法1(tidyverse/dplyr 1.0.0及以上版本)

你可以结合mutate()和across()对所有列做批量转换,逻辑是判断列值是否为0,对应返回目标字符串即可:

library(dplyr)

# 构造示例数据
df <- tibble(
  Cat = c(5, 0),
  Dog = c(0, 5)
)

# 执行转换
df_result <- df %>%
  mutate(across(everything(), ~ifelse(.x == 0, "Absent", "Present")))

输出结果和需求完全一致:

CatDog
PresentAbsent
AbsentPresent

补充说明

  • across(everything())代表对数据框的所有列执行后续操作,如果你只需要对部分列操作,可以把everything()替换为列选择规则(比如starts_with("xxx")或者指定列名向量)
  • 如果你使用的dplyr版本低于1.0.0没有across()函数,可以改用旧版的mutate_all()实现:
df_result <- df %>%
  mutate_all(~ifelse(. == 0, "Absent", "Present"))

基础R解法(不需要加载第三方包)

如果你不想使用tidyverse系列函数,可以直接用基础R语法批量处理:

df[] <- lapply(df, function(x) ifelse(x == 0, "Absent", "Present"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:02