今天学到了一个小技巧,对于data.frame格式的数据,有些列是没有一个数据的,也就是整列都是NA值。
处理的思路是:使用apply函数对每一列进行处理,函数是自定义的函数。
自定义函数
- 函数的功能是对传递过来的参数(向量),判断是否整列为空,是则返回0,否则返回1
- 判断是否整列为空: is.na()对向量遍历,table()统计,names()取得table的名字
- 若想取得table的数字,可以用as.numberic(table(x))
library(dplyr)
myfun=function(vector){
tt=vector %>% is.na() %>% table() %>% names()
ifelse((length(tt)==1 & tt=="TRUE"),return(0),return(1))
}
调用函数,将返回值存入count
- 现在count存储着列名、列的信息(0或1)
count=apply(laml.data, 2, myfun)
删除空列
- 由which得到count的索引
laml.data=laml.data[,which(count==1)]
其他
- 去除存在NA值的行
na.omit(x)
网友评论