每次做数据分析之前必经之路之路就是数据清洗,其中移除缺损值过多的变量是常用手段之一。
每次都会用for循环写一个函数套进去,然鹅有没有更方便快捷的方法呢。当然有,而且不需要用到第三方包。R基本函数就可以解决。
先创建一个数据集
set.seed(0)
dat <- matrix(1:100, 10, 10)
dat[sample(1:100, 50)] <- NA
dat <- data.frame(dat)
然后用colMeans
或者rowMeans
就可以解决。
- 删除NA值过半的列
## Remove columns with more than 50% NA
dat[, which(colMeans(!is.na(dat)) > 0.5)]
- 删除NA值过半的行
## Remove rows with more than 50% NA
dat[which(rowMeans(!is.na(dat)) > 0.5), ]
- 删除NA值过半的行和列
## Remove columns and rows with more than 50% NA
dat[which(rowMeans(!is.na(dat)) > 0.5), which(colMeans(!is.na(dat)) > 0.5)]
轻松搞定。所以基础很重要。
网友评论