在 R 中的数据 Table 的单列中替换 NA

Replace NAs in a Single Column of a Data Table in R

我正在尝试用“-999”替换 R 中数据table的单列中的 NA,我完全可以理解。

Whosebug 上有一个相关问题 here,但我认为这可以在不遍历 table.

的情况下完成

我在数据 table 中有一列 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。第二个不起作用,我知道它已关闭,但我想我已经接近了。

有人能帮忙吗?

谢谢。

除非列中的数据不是字符,否则您的代码不会关闭,在这种情况下,您必须将 -999 设置为 inter/numeric 而没有 ""

data <- read.table(header=TRUE, text='
 id weight   size
 1     20  small
 2     27  large
 3     24 medium
 ')

data <- data.table(data)

> data[size == 'small', weight := NA]
> data
     size id weight
1:  small  1     NA
2:  large  2     27
3: medium  3     24
> is.na(data)
      size    id weight
[1,] FALSE FALSE   TRUE
[2,] FALSE FALSE  FALSE
[3,] FALSE FALSE  FALSE
> data[is.na(weight), weight := -999]
> data
     size id weight
1:  small  1   -999
2:  large  2     27
3: medium  3     24
> data[size == 'small', weight := NA]
> data[is.na(weight), weight := "-999"]
Warning message:
In `[.data.table`(data, is.na(weight), `:=`(weight, "-999")) :
  Coerced 'character' RHS to 'integer' to match the column's type. 

编辑:这是我刚刚看到的@dracodoc 在评论中建议的内容