【问题标题】:check empty or na values in columns in R检查 R 中列中的空值或 na 值
【发布时间】:2018-02-27 09:53:30
【问题描述】:

我有一个来自大型 MySQL 表的数据框“d1”。我需要找到一个未使用的列(仅包含 NA 或空字符串)。 (见问题Find columns with all missing values)。

这似乎工作正常:

allmisscols <- apply(d1,2, function(x)all(is.na(x)));
colswithallmiss <-names(allmisscols[allmisscols>0]);
cat( colswithallmiss,sep="\n");

...

allmisscols <- apply(d1,2, function(x)all(x==''));
colswithallmiss <-names(allmisscols[allmisscols>0]);
cat( colswithallmiss,sep="\n");

...

虽然第二个在列名中也给出了“NA”;我不明白为什么。

但是当我尝试将它们结合起来时:

allmisscols <- apply(d1,2, function(x)all(is.na(x)||x=='') );  
colswithallmiss <-names(allmisscols[allmisscols>0]);    
print("the columns with all values missing");    
print(colswithallmiss);

我在结果中看到一列实际上包含我的表中的值!

同样给出以下内容:

库(字符串); sapply(d1, function(x)all(any(is.na(x)||(str_trim(x)==""))))

所以我的问题是:

  1. 为什么我会得到如此意想不到的结果?
  2. 如何获取仅包含空 OR N/A 值的列列表?

【问题讨论】:

    标签: mysql r dataframe na


    【解决方案1】:

    试试这个:

    allmisscols <- sapply(dt, function(x) all(is.na(x) | x == '' ))
    

    注意:您使用 OR 作为双 '||'试图使它成为一个单一的。阅读这篇 SO 帖子:Boolean operators && and ||

    【讨论】: