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

R语言中如何按条件公式为数据框新增GFR列?

解决R语言数据框新增带条件计算列的问题

首先把你提供的数据整理成可直接使用的R数据框:

df <- data.frame(
  ID = c(93735, 93830, 93834, 93851, 93893, 94017, 94050, 94073, 94095, 94179,
         94348, 94500, 94634, 94670, 94677, 94711, 94724, 94725, 94729, 94750,
         94753, 94792, 94813, 94847, 94894),
  Gender = c(1,1,2,2,1,1,2,1,2,1,1,2,2,1,2,2,2,1,1,1,2,1,2,2,1),
  Age = c(52,67,48,74,55,54,55,69,78,72,80,60,80,60,25,64,80,56,37,80,74,66,62,80,50),
  Race = c(2,0,3,3,0,3,3,0,0,3,3,0,3,0,3,1,3,3,0,3,0,0,0,0,3),
  SCR = c(11.46,6.34,0.64,1.07,2.40,3.01,0.93,1.46,NA,1.90,1.62,1.25,1.19,1.62,0.77,0.90,1.22,NA,1.87,1.34,0.86,7.43,0.62,2.16,0.98)
)

下面提供两种实现GFR计算的方法:

方法一:基础R实现

用ifelse()函数处理条件逻辑,生成对应的乘法因子后代入公式计算:

# 生成种族因子:Race=3时取1.212,否则取1
race_factor <- ifelse(df$Race == 3, 1.212, 1)
# 生成性别因子:Gender=1时取0.742,否则取1
gender_factor <- ifelse(df$Gender == 1, 0.742, 1)

# 新增GFR列并完成计算
df$GFR <- 175 * (df$SCR^-1.154) * (df$Age^-0.203) * race_factor * gender_factor

方法二:dplyr包实现(简洁易读)

如果习惯使用tidyverse工具链,用dplyr::mutate()可以一步完成列的新增与计算:

# 未安装dplyr的话先运行install.packages("dplyr")
library(dplyr)

df <- df %>%
  mutate(
    GFR = 175 * (SCR^-1.154) * (Age^-0.203) * 
           ifelse(Race == 3, 1.212, 1) * 
           ifelse(Gender == 1, 0.742, 1)
  )

说明

  • 当SCR为NA时,计算出的GFR会自动变为NA,R会自动处理这种缺失值场景
  • 两种方法最终效果完全一致,可根据个人习惯选择使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:34:54