乘列时删除 NA

KT_*_*T_1 5 r

这是一个非常简单的问题,但我希望有人能够帮助我避免额外的不必要的代码行。我有一个简单的数据框:

Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9)))
Run Code Online (Sandbox Code Playgroud)

我想要做的是生成一个额外的列,它是 A、B 和 C 的乘法,然后我将其绑定到原始数​​据帧。

所以,我通常会使用:

attach(Df.1)
D<-A*B*C
Run Code Online (Sandbox Code Playgroud)

但显然 NA 位于 C 列中,我在变量 D 中得到 NA。我不想排除所有 NA 行,而只是忽略此列中的 NA 值(然后 D 中的值将只是A 和 B 的乘法,或者在 C 可用的情况下,A*B*C。

我知道我可以简单地将 NA 替换为 1,因此计算保持不变,或者使用 if 语句,但我想知道最简单的方法是什么?

有任何想法吗?

Jam*_*mes 3

您可以使用prod带有参数的which na.rm。要按行执行此操作,请使用apply

apply(Df.1,1,prod,na.rm=TRUE)
[1]  10  60  14 120  72  36
Run Code Online (Sandbox Code Playgroud)