在 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 在评论中建议的内容
我正在尝试用“-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 在评论中建议的内容