【问题标题】:Subset all rows in a dataframe that are NOT unique (based on a vector/column) .. or remove unique rows子集数据框中不唯一的所有行(基于向量/列)..或删除唯一行
【发布时间】:2021-05-04 20:49:43
【问题描述】:

我有一个包含许多基因的数据框(列是“基因”)。有些基因不止一次出现。我想对只有出现不止一次的基因的数据框进行子集化。换句话说,我想删除相对于“基因”列唯一的行。

【问题讨论】:

    标签: r dataframe subset unique


    【解决方案1】:

    我们可以在base R 中使用subsettable。使用table 获取“基因”的频率计数,创建一个检查计数是否大于 1 的逻辑表达式,检索这些基因并使用%in% 对这些基因进行子集化

    subset(df1, genes %in% names(which(table(genes) > 1)))
    

    或者另一个选项是duplicated

    subset(df1, duplicated(genes)|duplicated(genes, fromLast = TRUE))
    

    或使用dplyr

    library(dplyr)
    df1 %>%
       group_by(genes) %>%
       filter(n() > 1) %>%
       ungroup
    

    【讨论】:

      【解决方案2】:

      这是另一个基本 R 选项,使用 subset + ave

      subset(df, ave(gene,gene,FUN = length)>1)
      

      【讨论】:

        猜你喜欢
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 2023-03-16
        • 2017-03-24
        • 2022-11-15
        • 1970-01-01
        • 2023-02-10
        相关资源
        最近更新 更多