【问题标题】:Drop columns in a data.frame with conditions R使用条件 R 在 data.frame 中删除列
【发布时间】:2023-04-10 12:41:01
【问题描述】:

我正在尝试比以往更懒惰地使用 R,我想知道是否有机会通过使用条件从 data.frame 中删除列。

例如,假设我的 data.frame 有 50 列。

我想删除所有相互共享的列

mean(mydata$coli)... = mean(mydata$coln) = 0

您将如何编写此代码以一次性删除它们?因为我习惯用

删除列
mydata2 <- subset(mydata, select = c(vari, ..., varn))

由于需要手动数据检查,显然不感兴趣。

谢谢大家!

【问题讨论】:

    标签: r dataframe conditional-statements multiple-columns


    【解决方案1】:

    我们可以使用colMeans 获取所有列的mean 作为vector,将其转换为逻辑索引 (!=0) 并对数据集进行子集化。

    mydata[colMeans(mydata)!=0]
    

    或者使用Filterf 作为mean。如果某列的mean 为0,则将其强制为FALSE,其他所有为TRUE,以过滤掉该列。

    Filter(mean, mydata)
    

    数据

    mydata <- data.frame(col1=0, col2=1:7, col3=0, col4=-3:3)
    

    【讨论】:

      【解决方案2】:

      类似于@akrun 使用lapply 的东西

      mydata <- data.frame(col1=0, col2=1:7, col3=0, col4=-3:3)
      mydata[lapply(mydata, mean)!=0]
      
      # col2
      #1    1
      #2    2
      #3    3
      #4    4
      #5    5
      #6    6
      #7    7
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 2016-07-09
        • 1970-01-01
        • 2011-09-11
        • 2021-12-26
        • 1970-01-01
        相关资源
        最近更新 更多