首页 > 解决方案 > 在 R 中创建一个新列,该列使用引用其他列的方程

问题描述

嗨,我正在尝试在名为“Erie”的数据集中创建一个名为“pCO2”的新列。我的数据集目前有 ph、alk 和 temp 值。如果您有 pH 值和碱度值,有一个名为 AquaEnv 的软件包可以让您预测 CO2 值。

这是在“pCO2 列”中找到我想要的值的方程式

ae<-aquaenv(S=0,t=0,p=0, SumCO2 = NULL, pH= 7.7,TA=90 )
ae$SumCO2

在我的伊利数据集中引用相应的 pH 值和碱度值时,有没有办法做到这一点?

这是我的想法,但它没有给出正确的值。

Erie$pCO2<-aquaenv(S=0,t=0,p=0, SumCO2 = NULL, pH=Erie$pH,TA= 
  Erie$ALKALINITY..mg.L.)

谢谢!

标签: requation

解决方案


这是一个令人惊讶的常见问题,没有真正好的答案。

让它工作的最快方法是:

df$SumCO2 <- sapply(
  split(Erie, 1:nrow(Erie)),
  function(r) {
    return(aquaenv(S=0,t=0,p=0,SumCO2=NULL, pH=r$pH, TA=r$ALKALINITY..mg.L.)$SumCO2)
  }
)

为了完成它,这会将Eriedata.frame 拆分为一组 data.frames(每行一个),并为每一行调用此函数。

稍微干净一点的mapply方法是:

mapply(
  function(pH, TA) {
    return(aquaenv(S=0,t=0,p=0,SumCO2=NULL, pH=pH, TA=TA)$SumCO2)
  }, Erie$pH, Erie$ALKALINITY..mg.L
)

其他方法的一些类似问题:


推荐阅读