【发布时间】:2016-09-24 14:38:42
【问题描述】:
我正在尝试用“-999”替换 R 中数据表的单个列中的 NA,我完全可以做到。
Stackoverflow 上有相关的问题here,但我认为这可以在不遍历表格的情况下完成。
我在数据表中有一个列 column_to_check。该列是一个因子变量,有 80K 个观测值,由 NA、0 和 1 组成。我正在尝试将 NA 更改为 -999,以便可以做进一步的工作。
我正在使用的代码是这样的:
is.na(DT[,column_to_check,with=FALSE]) = "-999"
和
DT[is.na(column_to_check), column_to_check:="-999"]
第一行将整列设置为 NA。第二个不起作用,我知道已经关闭,但我想我已经接近了。
谁能帮忙?
谢谢。
【问题讨论】:
-
“我正在尝试将 NA 更改为 -999,以便进行进一步的工作。” -- 除非您要导出数据以与其他软件一起使用,否则我想您会后悔的。 R 的所有功能都旨在与 NA 配合使用,而不是与 ersatz 缺失值代码配合使用。
-
我同意弗兰克关于一般原则的看法。虽然第二行的错误信息是什么?我觉得很好。你有可重现的例子吗?
-
data.table可能会抱怨第二行,因为您试图将字符值分配给数字列。为什么要使用"-999"而不是-999? -
谢谢大家——事实上,该列是一个包含“NA”、“1”和“0”的因子。第二行代码确实有效。不知道为什么我有问题。
-
@Frank - 我这样做是出于纯粹的原因。我需要将 NA 更改为 -999(或 NA 以外的其他值)的原因是 - 之后,我在列上使用 if/then/else 语句来查找值。我使用“if column_to_check == "1" then...:", "if column_to_check == "0" then...:", "else...."。在列中使用 NA 时出现错误,因为 if/then/else 显然不喜欢 NA。所以我需要把它改成字符或数字
标签: r data.table data-munging