【问题标题】:Exclude the columns who consist of only NA's [duplicate]排除仅包含 NA 的列 [重复]
【发布时间】:2016-03-17 11:14:42
【问题描述】:

我的问题很像之前的问题 (Remove rows with NAs (missing values) in data.frame)。我想过滤我的矩阵,使所有只有 NA 的列都消失了。我想保留该列,其中包含 NA 和数字的混合。因此,在下面的示例中,我想删除名为 mmul 和 cfam 的列并保留其余列。

             gene hsap mmul mmus rnor cfam
1 ENSG00000208234    0   NA   NA   NA   NA
2 ENSG00000199674    0   NA    2    2   NA
3 ENSG00000221622    0   NA   NA   NA   NA
4 ENSG00000207604    0   NA   NA    1   NA
5 ENSG00000207431    0   NA   NA   NA   NA
6 ENSG00000221312    0   NA    2    3   NA

我希望我的新矩阵如下所示:

             gene hsap  mmus rnor 
1 ENSG00000208234    0   NA   NA  
2 ENSG00000199674    0    2    2  
3 ENSG00000221622    0   NA   NA  
4 ENSG00000207604    0   NA    1  
5 ENSG00000207431    0   NA   NA  
6 ENSG00000221312    0    2    3  

【问题讨论】:

  • 可以试试df[colSums(is.na(df)) != nrow(df)]
  • 或类似df[!!colSums(!is.na(df))]
  • 或者df[colSums(!is.na(df)) > 0] ... 骗子?
  • @docendodiscimus 同样只是没有打高尔夫球。你说得对。忘记找了。
  • @DavidArenburg 我在欺骗中发布了答案。在这里删除..

标签: r filter dataframe


【解决方案1】:

你正在寻找all(is.na()):

DF = data.frame(Col1 = c(NA,NA),Col2 = c(1,1));
DFOut = DF[!apply(DF,2,function(x) all(is.na(x)))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2021-05-28
    • 2016-10-17
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多