【问题标题】:Filter a data frame by column sums按列总和过滤数据框
【发布时间】:2018-05-25 03:19:17
【问题描述】:

我有一个如下图所示的数据框(绘图与物种出现数据)。

df=data.frame(plot=c(1, 2, 3, 4, 5, 6, 7, 8, 9), speciesA=c(5, 0, 10, 0, 8, 45, 0, 0, 17), speciesB = c(0, 0, 0, 0, 0, 0, 0, 0, 0), speciesC = c(0.7, 0, 17, 0, 0, 8, 0, 9, 0), species D = c(1, 0, 0, 3, 0, 0, 0, 9, 1))

我需要能够创建第二个数据框(或这个数据框的子集),其中仅包含出现在超过 4 个地块中的物种。我使用 colSums 来计算每列的出现次数 > 0,但不能将其应用于过滤数据框。
colSums(df != 0) df2 <- df[,which(apply(df,2,colSums)> 4)]

有什么建议吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    这个怎么样...

    df2 <- df[,colSums(df>0)>4]
    
    df2
      plot speciesA
    1    1        5
    2    2        0
    3    3       10
    4    4        0
    5    5        8
    6    6       45
    7    7        0
    8    8        0
    9    9       17
    

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2016-03-22
      • 2019-04-01
      • 1970-01-01
      • 2017-12-15
      相关资源
      最近更新 更多