【问题标题】:Remove rows when cells are equal [duplicate]当单元格相等时删除行[重复]
【发布时间】:2017-07-06 15:57:33
【问题描述】:

我有一张桌子:

df <- read.table(text=" 
a    b    5
a    a    2
c    a    3   
d    d    2    
a    a    1    
b    d    2   ")
colnames(df) <- c("Gen1","Gen2", "N")

我想删除 Gen1 = Gen2 时的行。 例如我会得到这个例子:

result <- read.table(text=" 
a    b    5
c    a    3     
b    d    2   ")
colnames(df) <- c("Gen1","Gen2", "N")

我尝试使用重复,但重复是按行而不是列工作。

【问题讨论】:

    标签: r duplicates subset rows


    【解决方案1】:

    我们可以使用subset

    subset(df, Gen1!=Gen2)
    

    filter 来自tidyverse

    library(tidyverse)
    df %>% 
        filter(Gen1 != Gen2)
    

    数据

    df[1:2] <- lapply(df[1:2], as.character)
    

    【讨论】:

    • df[!(duplicated(df[c("Gen1","Gen2")]) | duplicated(df[c("Gen1","Gen2")], fromLast = TRUE)), ]
    • Akrun,如果字符串为 as.character 则有效;)
    【解决方案2】:

    对于大型数据集,您可以使用data.table

    library(data.table)
    setDT(df)[Gen1!=Gen2,]
    

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多