删除NA案例并计算R中因子的平均值

时间:2018-03-20 19:05:02

标签: r

如何删除列中的NA个案并同时计算因子的平均值?

使用此代码,我在x数据帧

内计算Group_A中DC1的平均值

test.mean <- mean(x$DC1[x$Groups=="Group_A"])

但是,Group_A因子中的DC1列的某些值确实具有NA单元格。为了从DC1中删除NA个案,我运行此代码,其中DC1列是第3个。

test.filterNA <- x[complete.cases(x[ , 3]), ]

如何在一个简单的行中合并两个代码?

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这种情况。在这里,列&#39;组&#39;有一些缺失值。使用==运算符,NA值将返回为NA

c(1:3, NA) == 2
#[1] FALSE  TRUE FALSE    NA

当我们根据上面的逻辑索引对另一列进行子集时,NA值将返回为NA

如果要应用的功能具有缺失值删除选项,则可以使用它。在mean的情况下,na.rm默认为FALSE。将其更改为TRUE,它应该工作

mean(x$DC1[x$Groups == "Group_A"], na.rm = TRUE)

另一种选择是使NA值返回为FALSE。这可以通过另一个逻辑条件& !is.na

来完成
mean(x$DC1[x$Groups=="Group_A" & !is.na(x$Groups)])

如果&#39; DC1&#39;中没有NA值,它应该可以正常工作。为安全起见,最好同时添加na.rm = TRUE

第三个选项是使用%in%,它总是返回TRUE / FALSE

mean(x$DC1[x$Groups %in% "Group_A"])

答案 1 :(得分:1)

@akrun的两个选项:

mean(x$DC1[x$Groups == "Group_A"], na.rm = TRUE)

mean(x$DC1[x$Groups=="Group_A" & !is.na(x$Groups)])