【发布时间】:2023-03-06 11:53:02
【问题描述】:
首先,我找不到与我的问题相关的问题,如果这个问题已经得到回答,我们深表歉意。
我有一个包含一些列的数据框,我想使用特定的计算来计算一个新值。我想我必须使用来自 tidyverse 的mutate(),但我想避免存在一个或多个 0 值的行/样本。当我使用mutate() 时,我不知道如何检查是否有任何 0。另外,我不知道如何应用我的特定公式来创建新列。
我在这里留下一个代码来创建一个数据框作为我的问题的一个例子。
set.seed(123)
df <- data.frame(
time = seq(now(), now()+hours(11),by='hours'),
a = sample(0:100,12),
b = sample(0:100,12),
c = sample((0:20)/1000,12))
df[1:3,]$a <- 0
df[3:5,]$b <- 0
df[3:4,]$c <- 0
# function: M = a*b+(1-e^(-c/2))
# if any 0 in the row -> M = NA
# else: apply function
函数可以写成
a*b*(1-exp(-c/2))
最终的 df 每小时(行)应该有 4 列(a、b、c 和新计算的 M),但是当 a | b | c == 0, M = NA 时。
我会非常感谢每一个小小的帮助。干杯!
编辑:实际函数比这个例子更复杂,所以如果一个项 (a,b,c,...) 为 0,则结果 M 为 0 并不总是正确的。抱歉,我没有'没有意识到这个假设对于简化方程是正确的。 但我想避免任何 0 值,因为它们来自监测生理变量,我知道如果样本中有一个值为 0,那么样本是错误的,所以不适用。
【问题讨论】: