将所有 0 值替换为 NA
问题描述:
我有一个带有一些数字列的数据框。某些行的值为 0,在统计分析中应视为空值。在R中将所有0值替换为NULL的最快方法是什么?
第 1 个答案:
将所有零替换为 NA:
df[df == 0] <- NA
解释
1. 这不是NULL
您应该想要替换零的东西。正如它所说?'NULL'
,
NULL 表示 R 中的空对象
这是独一无二的,我想,可以被视为最无信息和空洞的对象。1那么就不足为奇了
data.frame(x = c(1, NULL, 2)) # x # 1 1 # 2 2
也就是说,R 不为这个空对象保留任何空间。2同时,看着?'NA'
我们看到
NA 是长度为 1 的逻辑常数,其中包含缺失值指示符。NA 可以强制转换为除 raw 之外的任何其他向量类型。
重要的NA
是,长度为 1,以便 R 为其保留一些空间。例如,
data.frame(x = c(1, NA, 2)) # x # 1 1 # 2 NA # 3 2
此外,数据框结构要求所有列具有相同数量的元素,这样就不会出现“漏洞”(即NULL
值)。
现在,您可以在数据框中用零替换零,NULL
即完全删除包含至少一个零的所有行。var
例如,当使用
、cov
或cor
时,这实际上等同于首先将零替换为NA
并将其值设置use
为"complete.obs"
。然而,这通常不能令人满意,因为它会导致额外的信息丢失。
2.df == 0
在解决方案中,我使用矢量化,而不是运行某种循环。df == 0
返回(尝试)一个与
相同大小的矩阵,其中包含和df
的条目。此外,我们还可以将此矩阵传递给子集(参见参考资料)。最后,虽然结果非常直观,但给出预期效果可能看起来很奇怪。赋值运算符确实并不总是那么聪明,并且不能以这种方式与其他一些对象一起工作,但它可以与数据帧一起工作;见。TRUE``FALSE``[...]``?'['``df[df
== 0]``df[df == 0] <- NA``<-``?'<-'
1集合论中的空集感觉有某种关联。
2与集合论的另一个相似之处:空集是每个集合的子集,但我们不为它保留任何空间。
我看到有很多与此问题相关的类似主题,但在这些帖子中我没有找到适合我的解决方案。我刚刚安装了 Android Studiov0.8.14,它不会让我创建新项目,因为我没有指定 SDK 路径。对于我的 ...