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

在R语言中基于生命阶段条件使用mutate创建计算新列

在R中用dplyr创建多条件分支的新列

在处理多分支条件计算时,别用嵌套的ifelse(),用dplyr的case_when()会更清晰易读,完美适配你这种三个分支的场景。

完整实现代码

假设你的数据框叫df,直接用下面的代码:

# 先加载dplyr包
library(dplyr)

# 创建新列proportion.life.duration
df <- df %>%
  mutate(
    proportion.life.duration = case_when(
      `life stage` == "adult" ~ `Length of exposure` / (life span - `age at maturity`),
      `life stage` == "juvenile" ~ `Length of exposure` / dtm,
      `life stage` == "larva" ~ `Length of exposure` / `larval duration`,
      # 可选:处理未匹配到的情况,比如输入错误的life stage值
      TRUE ~ NA_real_
    )
  )

关键说明

  • 因为你的列名包含空格,所以必须用**反引号(`)**把列名包起来,R才能正确识别。
  • case_when()按顺序匹配条件,一旦某个条件满足,就会执行对应的计算,后面的条件不再判断。
  • 最后一行TRUE ~ NA_real_是兜底处理,如果life stage出现了不在你指定的三个值里的情况,会返回数值型NA,避免报错。

测试用示例数据

如果你需要验证代码,可以先创建一个测试数据框:

df <- tibble(
  `life stage` = c("adult", "juvenile", "larva", "adult"),
  `Length of exposure` = c(5, 3, 2, 4),
  `life span` = c(20, NA, NA, 18),
  `age at maturity` = c(10, NA, NA, 8),
  `larval duration` = c(NA, NA, 10, NA),
  dtm = c(NA, 15, NA, NA)
)

运行上面的mutate代码后,你就能看到新列的计算结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:20:41