【问题标题】:Drop columns with NA's in a list of data frames在数据框列表中删除带有 NA 的列
【发布时间】:2021-05-07 19:58:35
【问题描述】:

考虑一个名为GEER 的大型数据框列表,其中一些列仅包含NA。在 R 中,如何从所有元素中删除所有包含 NA 的列。

*并非所有元素都有包括NAs在内的项目。

> GEER
$ ch_0  :'data.frame': 74 obs. of  6000 variables:
..$ TIME  : Factor w/ 527 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME  : Factor w/ 100 levels "XTC_R" "DCC_S" "HG_CC" ...
..$ K_207  : num [1:100] 10.7 18.5 18.7 10.3 62.6 ...
..$ K_220  : num [1:100] 33.2 70.6 13.5 13.7 15.5 ...
..$ M_220  : num [1:100] 10.3 18.04 18.3 9.7 5.7 ...
..$ M_207  : num [1:100] 4.8 4.5 4.0 6.5 5.1 ...
$ ch_1290  :'data.frame':  380 obs. of  6000 variables:
..$ TIME  : Factor w/ 150 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME  : Factor w/ 100 levels "KTC_D" "DSC_C" "KL_SC" ...
..$ K_507  : num [1:100] 10.7 18.5 18.7 10.3 12.6 ...
..$ K_444  : num [1:100] NA NA NA NA NA ...
..$ M_513  : num [1:100] NA NA NA NA NA ...
..$ M_102  : num [1:100] NA NA NA NA NA ...
..$ K_505  : num [1:100] 14.0 18.3 14.7 11.2 12.6 ...

愿望输出将是:

> GEER_out
$ ch_0  :'data.frame': 74 obs. of  6000 variables:
..$ TIME  : Factor w/ 527 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME  : Factor w/ 100 levels "XTC_R" "DCC_S" "HG_CC" ...
..$ K_207  : num [1:100] 10.7 18.5 18.7 10.3 62.6 ...
..$ K_220  : num [1:100] 33.2 70.6 13.5 13.7 15.5 ...
..$ M_220  : num [1:100] 10.3 18.04 18.3 9.7 5.7 ...
..$ M_207  : num [1:100] 4.8 4.5 4.0 6.5 5.1 ...
$ ch_1290  :'data.frame':  380 obs. of  5997 variables:
..$ TIME  : Factor w/ 150 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME  : Factor w/ 100 levels "KTC_D" "DSC_C" "KL_SC" ...
..$ K_507  : num [1:100] 10.7 18.5 18.7 10.3 12.6 ...
..$ K_505  : num [1:100] 14.0 18.3 14.7 11.2 12.6 ...

感谢任何建议。

【问题讨论】:

    标签: r list na


    【解决方案1】:

    你可以使用janitor包中的remove_empty

    library(janitor)
    
    lapply(GEER, janitor::remove_empty, which = "cols")
    

    【讨论】:

      【解决方案2】:

      base R 中,我们可以使用Filterlapply

      lapply(GEER, function(dat) Filter(function(x) any(!is.na(x)), dat))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-22
        • 2021-01-12
        • 2011-02-08
        • 1970-01-01
        相关资源
        最近更新 更多