R编程-将文件中的NA视为0

时间:2018-12-08 21:26:07

标签: r

一个非常简单的问题,我无法谷歌/找到答案。

我有一个简单的文件-“ test.txt”

Gender arch1
M      99
F      97
M      NA

我使用read.table将其加载到结果集中-工作正常。

attach(resultset)

现在,我想要 _something _ 能给我

mean(arch1, [_SOMETHING_]) = 65.3 (and *_NOT_* 98) 

即不是na.rm = T或类似值。基本上,我想将NA视为0-并且我不想对矩阵和数据帧进行诸如here之类的复杂操作。

文件中的NA = 0。当然,我不能成为第一个想要这个的人吗?我不希望讨论NA和0是不是同一回事。我认为即使对失踪学生也要计算平均值是完全正确的!

4 个答案:

答案 0 :(得分:5)

像这样吗?

sum(arch1, na.rm = T)/length(arch1)

答案 1 :(得分:4)

在使用NA之前,您可以将mean替换为零:

mean(replace(arch1, is.na(arch1), 0))
# [1] 65.33333

答案 2 :(得分:0)

您可以用resultset$arch1[is.na(resultset$arch1)]=0将NA替换为零,然后计算arch1列的平均值

答案 3 :(得分:-1)

下面是我对如何实施我现在给出的正确答案的解决方案的建议:

avg_without_NA = function(vec) 
{
  my_ans = sum(vec, na.rm = T)/length(vec)
  return(my_ans)
}

因此,现在我要做的就是调用一个简单的函数,并将我的代码封装在其中!全面简化,更易于阅读!