【问题标题】:How to conditionally drop colum from R data frame如何有条件地从 R 数据框中删除列
【发布时间】:2013-09-12 04:18:23
【问题描述】:

根据值的总和有条件地删除数据框列的好方法是什么?

例如,在以下数据框中,我想删除所有值总和为零的列。

df = data.frame(Dum1=c(0,0,0,1,0,0,0,0,0,0),
Dum2=c(0,0,0,0,0,0,0,0,0,0),
Dum3=c(0,0,0,1,0,1,0,0,0,0),
Dum4=c(0,0,0,0,0,0,0,0,0,0))

colSums(as.matrix(df))

Dum1 Dum2 Dum3 Dum4 
1    0    2    0 

Dum2 和 Dum4 都是零,所以我想去掉它们。不幸的是,在我的应用程序中,我将提前知道哪些列的总和为零,或者我可以使用以下方法删除它们:

df$Dum2 <- NULL
df$Dum4 <- NULL

str(df)

'data.frame':   10 obs. of  2 variables:
 $ Dum1: num  0 0 0 1 0 0 0 0 0 0
 $ Dum3: num  0 0 0 1 0 0 0 0 0 0

任何帮助将不胜感激

【问题讨论】:

  • 如果提供的答案令人满意地解决了您的问题,接受答案是一种常见的礼貌。在我看来,Senor O 和我本人都对您的问题给出了满意的答案。
  • 抱歉,我不得不转移到别的事情上。感谢您的帮助。

标签: r dataframe


【解决方案1】:
df0 <- df[, colSums(df) != 0]

【讨论】:

    【解决方案2】:
    df[,which(colSums(df) == 0)] <- list(NULL)
    

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 2013-01-10
      • 2015-05-16
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2018-02-05
      • 2020-08-07
      • 1970-01-01
      相关资源
      最近更新 更多