忽略Ifelse语句中的NA-R

我有以下ifelse声明。

ww.LIG = ifelse( (Accel2$wk.VWD >= 3 & Accel2$we.VWD >= 0 ) 
             | ( Accel2$wk.VWD >=2 & Accel2$we.VWD >=1 ) 
             | ( Accel2$wk.VWD >=1 & Accel2$we.VWD >=2) , 
             (Accel2$wk.LIG + Accel2$we.LIG)/2, NA)

如果满足上述条件,最后一行将取两个变量的平均值。对于满足第一行中第一个条件的数据(Accel2 $ wk.VWD> = 3&Accel2 $ we.VWD> = 0),名为Accel2 $ we.VWD的变量存在一个NA,当该变量显然返回NAN尝试进行计算。

从此参数中删除NA的简单方法是什么?

非常感谢。

那个家伙

您可以通过两种方式解决此问题:

1)在此之前要检查NA的另一个ifelse-类似于:

ww.LIG = ifelse( is.na(Accel2$wk.VWD) | is.na(Accel2$we.VWD), NA,
             ifelse( (Accel2$wk.VWD >= 3 & Accel2$we.VWD >= 0 ) 
                 | ( Accel2$wk.VWD >=2 & Accel2$we.VWD >=1 ) 
                 | ( Accel2$wk.VWD >=1 & Accel2$we.VWD >=2) , 
                 (Accel2$wk.LIG + Accel2$we.LIG)/2, NA))

2)删除NA行开头-类似:

df = complete.cases(data.frame(wkVWD = Accel2$wk.VWD, weVWD = Accel2$we.VWD, Accel2$wk.LIG, weLIG = Accel2$we.LIG))
df$wwLIG = ifelse( (df$wkVWD >= 3 & df$weVWD >= 0 ) 
         | ( df$wkVWD >=2 & df$weVWD >=1 ) 
         | ( df$wkVWD >=1 & df$weVWD >=2) , 
         (df$wkLIG + df$weLIG)/2, NA)

那对你有用吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章