这是一个非常简单的问题,但我希望有人能够帮助我避免多余的不必要的代码行。我有一个简单的数据帧:乘以列时删除NA
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)))
我想要做的是产生一个额外的列是A,B和C,的倍增,我会再cbind原来的数据帧。
所以,我通常会使用:
attach(Df.1)
D<-A*B*C
但很明显,其中NA的列C,我得到一个NA变量D.我不想排除所有的NA行,而只是忽略此列中的NA值(然后D中的值将简单地是A和B的乘积,或者其中C是可用的,A * B * C
我知道我可以简单地用1代替NA ,所以计算保持不变,或使用if语句,但是我正在寻找这样做的简单方法是什么?
任何想法?
如何'd < - A * B *(!C * is.na(C)+ 1 * is.na(C))',它是使用'if'周围偷偷摸摸。 – 2012-03-13 11:21:51
这将是伟大的,但我恐怕@CarlWitthoft代码行不起作用。 – 2012-03-13 11:32:16
我的歉意 - 我现在无法测试/调试。你能告诉我什么错误(或输出错误)? – 2012-03-13 13:21:14