我试图有条件地从一列数据中有条件地生成值,并有条件地基于其中一列中的值。有条件地从现有列创建新列
fio2 <- c(0.25, 0.5, 0.8)
pao2 <- c(100, 60, 90)
paco2 <- c(35, 45, 45)
df <- data.frame(fio2, pao2, paco2)
如果FIO2 < 0.5我想的PaO2的同一行中的对应的值被复制到一个新的列(pao2_raw)。如果fio2> = 0.5,我想执行一个使用行中其他值的函数,然后将它存储在一个新列(aao2)中。在我的实际数据中有很多数据点,并且通过数据集分散了相关的列。我的想法是:
#Function for when fio2 >= 0.5
aagrad <- function(x) {
(x * (705) - df$paco2/0.8) - df$pao2
}
#Sorting function
aasort <- function(x) {
if (x < 0.5) {
df$pao2_raw <- df$pao2
} else {
aao2 <- aagrad(x)
}
}
#run function
sapply(df$fio2, aasort(df$fio2))
预期产出将是DF $ pao2_raw用的值(100,NA,NA) - 直接从$动脉血氧分压和df $ aao2移动(NA,236.25,417.75)这是使用aagrad函数计算的。
我没有关于如何修正aasort语法的线索,我对使用sapply实际将条件操作应用于整个列没有信心。和援助将不胜感激。
什么是预期的输出? – mtoto
编辑,谢谢。 – veldhoen