在 R 数据 table 中将空白读取为缺失 (NA)
Read blank as missing(NA) in R data table
我正在尝试创建一个函数,它可以找到缺失的位置并将缺失归因于数据 table。现在这个函数广泛使用 is.na()
来找出缺失的位置,并用插补值替换它。它适用于所有类型的变量,直到输入是 character
类型的列并且缺少空白单元格,因为 is.na()
无法将其识别为缺失,因此它会跳过这些单元格进行插补。
示例:
library(data.table)
t<-data.table(x=c('an','ax','','az'),y=c('bn','','bz','bx'))
x y
1: an bn
2: ax
3: bz
4: az bx
is.na(t[,x])
[1] FALSE FALSE FALSE FALSE
它应该在哪里
[1] FALSE FALSE TRUE FALSE
非常感谢任何帮助。
谢谢。
您可以像这样使用快速 nzchar
:
is.na(x) | !nzchar(x)
例如:
x <- c(NA,'','a')
is.na(x) | !nzchar(x)
## [1] TRUE TRUE FALSE
将此应用于 OP 示例:
我用 ifelse
将它包装在一个函数中:
tt <- data.table(x=c('an','ax','','az'),y=c('bn','','bz','bx'))
tt[, lapply(.SD,
function(x)
ifelse(is.na(x) | !nzchar(x),'some value',x)) ]
x y
1: an bn
2: ax some value
3: some value bz
4: az bx
另一种使用条件赋值的解决方案(使用i
):
DT <- data.table(x = c('an','ax','','az',NA),
y = c(NA,'bn','','bz','bx'))
DT[x %in% c(NA, ""), x := 'some value']
DT[y %in% c(NA, ""), y := 'some value']
结果:
x y
1: an some value
2: ax bn
3: some value some value
4: az bz
5: some value bx
我正在尝试创建一个函数,它可以找到缺失的位置并将缺失归因于数据 table。现在这个函数广泛使用 is.na()
来找出缺失的位置,并用插补值替换它。它适用于所有类型的变量,直到输入是 character
类型的列并且缺少空白单元格,因为 is.na()
无法将其识别为缺失,因此它会跳过这些单元格进行插补。
示例:
library(data.table)
t<-data.table(x=c('an','ax','','az'),y=c('bn','','bz','bx'))
x y
1: an bn
2: ax
3: bz
4: az bx
is.na(t[,x])
[1] FALSE FALSE FALSE FALSE
它应该在哪里
[1] FALSE FALSE TRUE FALSE
非常感谢任何帮助。
谢谢。
您可以像这样使用快速 nzchar
:
is.na(x) | !nzchar(x)
例如:
x <- c(NA,'','a')
is.na(x) | !nzchar(x)
## [1] TRUE TRUE FALSE
将此应用于 OP 示例:
我用 ifelse
将它包装在一个函数中:
tt <- data.table(x=c('an','ax','','az'),y=c('bn','','bz','bx'))
tt[, lapply(.SD,
function(x)
ifelse(is.na(x) | !nzchar(x),'some value',x)) ]
x y
1: an bn
2: ax some value
3: some value bz
4: az bx
另一种使用条件赋值的解决方案(使用i
):
DT <- data.table(x = c('an','ax','','az',NA),
y = c(NA,'bn','','bz','bx'))
DT[x %in% c(NA, ""), x := 'some value']
DT[y %in% c(NA, ""), y := 'some value']
结果:
x y
1: an some value
2: ax bn
3: some value some value
4: az bz
5: some value bx