删除data.frame中缺少观察值的变量

时间:2016-09-21 08:20:14

标签: r dataframe missing-data

我需要删除所有缺少观察值的变量或所有具有全零的变量作为我数据框中所有观察值的值。

此工作data[,!sapply(data, function(x) any(is.na(x)))]

用于说明目的的示例:

x y z a
. 3 0 1
. 4 0 2
2 3 0 3

所以这里我需要删除x变量,因为它缺少了obs 接下来,我还需要删除Z变量,因为它包含所有0的所有障碍。

谢谢。

1 个答案:

答案 0 :(得分:0)

要删除带有零的列,我会经常使用此函数:

RemoveZeros = function(data, proportion=0.00){
  temp <- data
  NullRatio = function(x) {length(x[x==0])/length(x)}
  to_keep <- which(apply(temp, 2, NullRatio) <= proportion)
  message("removed columns: ", paste0(names(temp)[-to_keep], collapse=", "))
  return(temp[, to_keep])
}

您可以定义列中允许的最大零比例以保留它。它还会打印被抑制列的名称。