【问题标题】:R: Filtering rows of a factor according to a columnR:根据列过滤因子的行
【发布时间】:2021-07-16 23:42:48
【问题描述】:

我有一个由 2 列组成的数据框:

  • "cells" : 3 个级别的因子
  • “值”:数字

我想要做的是,用单元格过滤所有行,其中至少有一个值小于用户指定的限制。

这是一个例子:

df <- data.frame("cells" = c("c1", "c2","c3","c1","c1","c2","c3","c2"),
                 "values" = c(3,4,5,2,5,5,1,6))
df$cells <- factor(df$cells, levels = c("c1", "c2","c3"))

数据框“df”如下所示。如果我将限制设置为 1.5,那么所有在“单元格”列中具有“c3”的行都将被删除,因为至少有一个“c3”值(第 7 行中的“1”)小于限制, 2.5.

实现此目的的一种方法是为每个不同的“单元格”值(group_by(cells) 和 mutate)添加一列最小值。我想知道是否有办法在不向数据框添加新列的情况下做到这一点。

谢谢。 伊尔汗

cells values
c1 3
c2 4
c3 5
c1 2
c1 5
c2 5
c3 1
c2 6

【问题讨论】:

    标签: r


    【解决方案1】:

    在按“单元格”分组后使用filterall

    library(dplyr)
    thresh <- 1.5
    df %>% 
       group_by(cells) %>% 
       filter(all(values > thresh, na.rm = TRUE)) %>% 
        ungroup
    

    subset

    subset(df,  !cells %in% cells[values < thresh])
    

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 2013-09-06
      • 2016-10-05
      • 1970-01-01
      • 2021-06-25
      • 2017-05-04
      • 2022-01-14
      • 2018-11-21
      • 1970-01-01
      相关资源
      最近更新 更多