【问题标题】:Remove columns from a dataframe meeting a treshold of non-zero values从满足非零值阈值的数据框中删除列
【发布时间】:2015-06-25 17:53:29
【问题描述】:

我想按非零值的数量拆分数据框,比如我想删除所有超过 n 个零的列。我知道如何删除所有零和列:

df[, colSums(df) != 0]

但是对于零元素的任何阈值如何做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:

    我们需要创建一个逻辑矩阵,然后执行colSums

     n <- 3
     df[colSums(df==0) <= n]
    

    数据

     set.seed(22)
     df <- as.data.frame(matrix( sample(0:4, 5*20, replace=TRUE), ncol=5))
    

    【讨论】:

    • @CathG 对不起,我没明白你的意思。能否举个例子详细说明
    • 没关系,我想我误读了这个问题,我认为 OP 正在做 df[, colSums(df) != 0] 以删除只有零的列,因此如果列是 c(0, 0, 1, 0, -1, 0) 则无法正常工作我只是说你的方式更好......
    • @CathG 在您发表评论后,我重新阅读了这个问题。但他的描述和代码是不同的。例如I want to remove all columns with more than n zeros 和代码是 OP 知道的关于做不同的事情。
    • 没错,在您发表评论后我也重新阅读,发现我第一次误解了显示代码的目的;-)
    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2020-10-20
    相关资源
    最近更新 更多