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
相关产品推荐
相关产品推荐

