【问题标题】:Delete NA Columns in sparklyr在 sparklyr 中删除 NA 列
【发布时间】:2017-08-15 20:49:26
【问题描述】:

我有一个包含 75 列的数据框,其中 12 列具有所有 NA,有些具有 70% 的 NA。我想删除具有 >=70% NA 的列。

任何人都可以帮助我吗?我试过了

df[,! apply( df , 2 , function(x) all(is.na(x)) )

但我得到了例外:

错误:无法从 NULL 类的对象中检索 spark_connection

我也试过了:

df[colSums(!is.na(df)) != nrow(df)]

df[, colSums(is.na(df)) < nrow(df)]

但是我遇到了异常

colSums(!is.na(df)) 中的错误:“x”必须是至少二维的数组

【问题讨论】:

    标签: r apache-spark dplyr sparklyr


    【解决方案1】:

    sparklyr 看起来有点棘手,但是,我们可以从数据集的本地副本中获取需要删除的列的索引,并使用 select 删除这些列

    j1 <- which(!colSums(!is.na(df)))
    library(sparklyr)
    sc <- spark_connect(master = "local")
    df_tbl <- copy_to(sc, df)
    library(dplyr)
    df_tbl %>% 
             select(-j1)
    # Source:   query [20 x 2]
    #Database: spark connection master=local[4] app=sparklyr #local=TRUE
    
    #    col2        col3
    #   <int>       <dbl>
    #1      1 -1.31690812
    #2      1  0.59826911
    #3      4 -0.76221437
    #4      3 -1.42909030
    #5      3  0.33224445
    #6      5 -0.46906069
    #7      1 -0.33498679
    #8      4  1.53625216
    #9      4  0.60999453
    #10     1  0.51633570
    #11     3 -0.07430856
    #12     2 -0.60515695
    #13     4 -1.70964518
    #14     4 -0.26869311
    #15     1 -0.64859151
    #16     5 -0.09411013
    #17     1 -0.08554095
    #18    NA  0.11953107
    #19     3 -0.11629639
    #20    NA -0.94382724
    

    数据

    set.seed(24)
    df <- data.frame(col1 = NA_real_, col2 = sample(c(NA, 1:5), 20, 
                   replace = TRUE), col3 = rnorm(20))
    

    【讨论】:

    • 这个解决方案的问题是,我不知道哪些列是 NA。它不能是静态列表。无论如何,谢谢。
    • @Mansoor 你不必知道。从第一行代码j1 &lt;- which(!colSums(!is.na(df)))中以编程方式找到
    • Akrun,正如我所提到的,列不必都是 NA。 70% 不适用
    • @Mansoor 我的代码基于您在帖子中显示的代码。如果不是这样,那么我们可以很容易地解决这个问题
    • @Mansoor 如果是 70%,则将 'j1' 更改为 ji &lt;- which(colSums(is.na(df))/nrow(df) &gt;= 0.7)
    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2020-04-29
    • 1970-01-01
    • 2021-10-14
    • 2020-01-25
    • 2020-01-07
    相关资源
    最近更新 更多