1.锁定NA的位置
which(is.na(data3))
which会将Matrix或者DataFrame展开成Vector,然后计算缺失值。就类似于as.vector(A)一样。如果想要确切地知道哪行哪列的数据是缺失值,可以在which函数中加入参数:
which(is.na(data3),arr.ind = T)
2.锁定NA出现的行
3.有些格为空字符串而非NA
data2[data2==""]<-NA
4.将NA统一为0
is.nan.data.frame <- function(x)do.call(cbind, lapply(x, is.nan))
mydata[is.na(mydata)] <- 0
5.去除NA的行
下面用实例来说明这两个函数的作用:
这是一个数据框final:
gene hsap mmul mmus rnor cfam
1 ENSG00000208234 0 NA NA NA NA
2 ENSG00000199674 0 2 2 2 2
3 ENSG00000221622 0 NA NA NA NA
4 ENSG00000207604 0 NA NA 1 2
5 ENSG00000207431 0 NA NA NA NA
6 ENSG00000221312 0 1 2 3 2
如果要去除有NA的行,则可用:final[complete.cases(final),] 也可用 na.omit(final)
那么,返回值是
gene hsap mmul mmus rnor cfam
2 ENSG00000199674 0 2 2 2 2
6 ENSG00000221312 0 1 2 3 2
现在,我只想过滤部分列:我们就只能用final[complete.cases(final[,5:6]),]
结果是:
gene hsap mmul mmus rnor cfam
2 ENSG00000199674 0 2 2 2 2
6 ENSG00000221312 0 1 2 3 2
这样第四行含有空值,但是,我们的命令是只过滤第5列,第6列中含有NA的行