如何根据多个其他变量的值计算R中的新变量?

如何根据多个其他变量的值计算R中的新变量?,r,dataframe,variables,encoding,R,Dataframe,Variables,Encoding,我试图通过条件计算,根据多个现有变量的值计算一个新变量。具体来说,新的变量是肾功能(eGFR),它是根据一个人的性别、年龄、是否为(非)黑人以及两种血液成分(即肌酐和胱抑素C)的浓度来估计的 我曾试图用R的if…else语句来实现这一点,但遇到了一条警告消息,之后什么也没有发生。所有变量都包含在数据框“d”中 基本上,我想R做的是:若一个受试者是男性(=1)和非黑人(!=1),有血肌酐≤ 0.9和半胱氨酸蛋白酶抑制剂C≤ 0.8,则通过以下方式估计一个人的肾功能: 等等。为此,我应用了以下代码

我试图通过条件计算,根据多个现有变量的值计算一个新变量。具体来说,新的变量是肾功能(eGFR),它是根据一个人的性别、年龄、是否为(非)黑人以及两种血液成分(即肌酐和胱抑素C)的浓度来估计的

我曾试图用R的if…else语句来实现这一点,但遇到了一条警告消息,之后什么也没有发生。所有变量都包含在数据框“d”中

基本上,我想R做的是:若一个受试者是男性(=1)和非黑人(!=1),有血肌酐≤ 0.9和半胱氨酸蛋白酶抑制剂C≤ 0.8,则通过以下方式估计一个人的肾功能:

等等。为此,我应用了以下代码:

if (d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race != 1){ ### Non-Negroid males
    d$eGFR <- 135 * I((d$creatinine / 0.9)^-0.207) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race != 1){
    d$eGFR <- 135 * I((d$creatinine / 0.9)^-0.207) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race != 1){
    d$eGFR <- 135 * I((d$creatinine / 0.9)^-0.601) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race != 1){
    d$eGFR <- 135 * I((d$creatinine / 0.9)^-0.601) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race != 1){ ### Non-Negroid females
    d$eGFR <- 130 * I((d$creatinine / 0.7)^-0.248) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race != 1){
    d$eGFR <- 130 * I((d$creatinine / 0.7)^-0.248) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race != 1){
    d$eGFR <- 130 * I((d$creatinine / 0.7)^-0.601) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race != 1){
    d$eGFR <- 130 * I((d$creatinine / 0.7)^-0.601) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race == 1){ ### Negroid males
    d$eGFR <- 145.8 * I((d$creatinine / 0.9)^-0.207) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race == 1){
    d$eGFR <- 145.8 * I((d$creatinine / 0.9)^-0.207) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race == 1){
    d$eGFR <- 145.8 * I((d$creatinine / 0.9)^-0.601) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race == 1){
    d$eGFR <- 145.8 * I((d$creatinine / 0.9)^-0.601) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race == 1){ ### Negroid females
    d$eGFR <- 140.4 * I((d$creatinine / 0.7)^-0.248) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race == 1){
    d$eGFR <- 140.4 * I((d$creatinine / 0.7)^-0.248) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race == 1){
    d$eGFR <- 140.4 * I((d$creatinine / 0.7)^-0.601) * I((d$cystatinC / 0.8)^-0.375) * I((0.995)^d$age)
  } else if (d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race == 1){
    d$eGFR <- 140.4 * I((d$creatinine / 0.7)^-0.601) * I((d$cystatinC / 0.8)^-0.711) * I((0.995)^d$age)
  }

if(d$sex==1&d$creatinine我相信下面的函数符合问题中的定义,但它未经测试,因为没有数据和预期输出

eGFRfun <- function(DF){
  i_sex <- DF[["sex"]] == 1
  i_creat_0.9 <- DF[["creatinine"]] <= 0.9
  i_creat_0.7 <- DF[["creatinine"]] <= 0.7
  i_cyst <- DF[["cystatinC"]] <= 0.8
  i_race <- DF[["race"]] == 1

  const_fac <- ifelse(i_race, 135, 145.8) + 5*(i_sex - 1)
  creat_denom <- ifelse(i_sex, 0.9, 0.7)
  creat_pow <- ifelse(i_sex & i_creat_0.9, -0.207, -0.601)
  creat_pow <- ifelse(i_sex & i_creat_0.7, -0.248, -0.601)
  cystC_fac <- (DF[["cystatinC"]] / 0.8)^ifelse(i_cyst, -0.375, -0.711)
  age_fac <- 0.995^DF[["age"]]

  const_fac * (DF[["creatinine"]] / creat_denom)^creat_pow * cystC_fac * age_fac
}

eGFRfun我相信下面的函数遵循问题中的定义,但它未经测试,因为没有数据和预期输出

eGFRfun <- function(DF){
  i_sex <- DF[["sex"]] == 1
  i_creat_0.9 <- DF[["creatinine"]] <= 0.9
  i_creat_0.7 <- DF[["creatinine"]] <= 0.7
  i_cyst <- DF[["cystatinC"]] <= 0.8
  i_race <- DF[["race"]] == 1

  const_fac <- ifelse(i_race, 135, 145.8) + 5*(i_sex - 1)
  creat_denom <- ifelse(i_sex, 0.9, 0.7)
  creat_pow <- ifelse(i_sex & i_creat_0.9, -0.207, -0.601)
  creat_pow <- ifelse(i_sex & i_creat_0.7, -0.248, -0.601)
  cystC_fac <- (DF[["cystatinC"]] / 0.8)^ifelse(i_cyst, -0.375, -0.711)
  age_fac <- 0.995^DF[["age"]]

  const_fac * (DF[["creatinine"]] / creat_denom)^creat_pow * cystC_fac * age_fac
}
eGFRfun正如前面所建议的,以及所提供的函数,嵌套多个
ifelse
语句,而不是构建一个
if…else
构造来产生所需的结果

事实上,下面的代码远没有效率,也很难阅读,但它工作得非常好:

  ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race != 1, ### Non-Negroid males
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race != 1,  ### Non-Negroid females
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$egfr_nc2 <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid males
   d$eGFR <- 145.8 *((d$creatinine / 0.9)^-0.207) * ((d$cysc_nc2 / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid females
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   NA))))))))))))))))
ifelse(d$sex==1&d$creatinine正如已经建议的那样,以及所提供的函数,嵌套多个
ifelse
语句,而不是构建一个
if…else
构造来产生期望的结果

事实上,下面的代码远没有效率,也很难阅读,但它工作得非常好:

  ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race != 1, ### Non-Negroid males
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race != 1,  ### Non-Negroid females
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$egfr_nc2 <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid males
   d$eGFR <- 145.8 *((d$creatinine / 0.9)^-0.207) * ((d$cysc_nc2 / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid females
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   NA))))))))))))))))

ifelse(d$sex==1&d$creatinine您正在将整个向量与一个值进行比较。这将返回一个类似于[false-true-false]的向量。最后您询问
if([false-true-false])
,这是没有意义的。因此R将其剪切为第一个值。您需要执行其他逻辑运算符。请尝试%in%或类似的操作,它只返回一个逻辑值。您也可以尝试使用
any()
围绕您的所有条件,但这会修复您的语法。尝试考虑像ifelse这样的向量化操作,您可以使用
ifelse()
函数而不是
if…else
构造——但是有太多的条件,既没有效率也没有可读性。也许您可以首先基于
d$sex
d$race
创建一个新的因子变量,并为得到的4个因子水平开发简化公式(可抽象为其自身函数定义的公式),然后使用此因子和新函数以更可读的方式填充新变量。您能否发布样本数据,最好以
dput
格式覆盖所有情况?如果是,请使用
dput(head(d,20))的输出编辑问题
。您正在将整个向量与一个值进行比较。这将返回一个类似于[false-true-false]的向量。最后,您将询问
如果([false-true-false])
,这是没有意义的。因此R将其剪切为第一个值。您需要执行其他逻辑运算符。请尝试%in%或类似的操作,它只返回一个逻辑值。您也可以尝试使用
any()
围绕您的所有条件,但这会修复您的语法。尝试考虑像ifelse这样的向量化操作,您可以使用
ifelse()
函数而不是
if…else
构造——但是有太多的条件,既没有效率也没有可读性。也许您可以首先基于
d$sex
d$race
创建一个新的因子变量,并为得到的4个因子水平开发简化公式(可抽象为其自身函数定义的公式),然后使用此因子和新函数以更可读的方式填充新变量。您能否发布样本数据,最好以
dput
格式覆盖所有情况?如果是,请使用
dput(head(d,20))
的输出编辑问题。
  ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race != 1, ### Non-Negroid males
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 135 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race != 1,  ### Non-Negroid females
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race != 1,
   d$eGFR <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race != 1,
   d$egfr_nc2 <- 130 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid males
   d$eGFR <- 145.8 *((d$creatinine / 0.9)^-0.207) * ((d$cysc_nc2 / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine <= 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.207) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 1 & d$creatinine > 0.9 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 145.8 * ((d$creatinine / 0.9)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC <= 0.8 & d$race == 1, ### Negroid females
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine <= 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.248) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC <= 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.375) * ((0.995)^d$age),
   ifelse(d$sex == 0 & d$creatinine > 0.7 & d$cystatinC > 0.8 & d$race == 1,
   d$eGFR <- 140.4 * ((d$creatinine / 0.7)^-0.601) * ((d$cystatinC / 0.8)^-0.711) * ((0.995)^d$age),
   NA))))))))))))))))