【问题标题】:Remove singleton entry from table in R [duplicate]从R中的表中删除单例条目[重复]
【发布时间】:2019-07-20 22:11:39
【问题描述】:

我有一个数据表,我想在其中删除基于 b 列的单例观察。我需要一些代码来从表中删除单个观察(行),因为它只在相关数据列(此处的列 b)中出现一次。

我需要适用于各种表格的解决方案。因此解决方案必须基于该行是基于列 b 的单例这一事实。此外,某些表可能有多个单例。下面的表 3 是一个包含 3 行单例的示例。

我试过这段代码,但它给了我一个空表:

data_no_singleton <- filter(data, !table(data$b == 1))

以下是代码应该能够应用于的 3 个示例数据表:

data <- data.frame(a = c("OP2775iia","OP2775iib","OP2958i_a","OP2958i_b","OP2958iia","OP3023iia","OP3023iib"),
                    b = c("WAT","WAT","PAV","SAV","SAV","PAV","COM"),
                    c = c(10.9,12,5.6,1.23,8.99,45.6,30.2))

data <- data.frame(a = c("OP2775iia","OP2775iib","OP2958i_a","OP2958i_b","OP2958iia","OP3023iia","OP3023iib"),
                    b = c("SAV","SAV","SAV","WAT","COM","COM","COM"),
                    c = c(10.9,12,5.6,1.23,8.99,45.6,30.2))

data <- data.frame(a = c("OP2775iia","OP2775iib","OP2958i_a","OP2958i_b","OP2958iia","OP3023iia","OP3023iib"),
                    b = c("KAL","MOU","MOU","SAV","SAV","PAV","COM"),
                    c = c(10.9,12,5.6,1.23,8.99,45.6,30.2))

我需要一个表格,其中包含 b 列中任何单例的行被删除。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以在基础 R 中使用

    TAB= table(data$b)
    data[ifelse(TAB[data$b]==1, FALSE, TRUE),]
    

    【讨论】:

      【解决方案2】:

      我们可以使用

      library(dplyr)
      data %>% 
          group_by(b) %>% 
          filter(n() > 1)
      

      【讨论】:

      • 您的图书馆声明没有正确复制。你是说library(dplyr) 吗?
      • @G5W 感谢您指出这一点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2012-04-10
      • 2015-06-08
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多