【问题标题】:Delete rows based on values in R [duplicate]根据R中的值删除行[重复]
【发布时间】:2021-05-13 04:47:58
【问题描述】:

有没有办法根据值删除行。例如

df
ColA   ColB
A      1
B      2    
A      3

预期输出(基本上我知道我们可以根据行号删除。但是有没有办法根据值删除(“A”,3)

df
ColA   ColB
A      1
B      2    

【问题讨论】:

  • 查看subset函数subset(df, !(ColA == "A" & ColB == 3))

标签: r


【解决方案1】:

filter 的选项

library(dplyr)
df %>% 
    filter(!(ColA == "A" & ColB == 3))
   

【讨论】:

    【解决方案2】:

    您可以使用基础 R 中的subset

    > subset(df,!(ColA=="A"&ColB==3))
      ColA ColB
    1    A    1
    2    B    2
    

    data.table 解决方案

    > setDT(df)[!.("A",3),on = .(ColA,ColB)]
       ColA ColB
    1:    A    1
    2:    B    2
    

    【讨论】:

      【解决方案3】:

      最简单的方法是使用which() 函数(?which)。然后,您可以将其与减号结合使用,并根据特定条件对子集进行索引。

      df <- as.data.frame(cbind("ColA"=c("A", "B", "A"), "ColB" = c(1, 2, 3)))
      
      df <- df[-which(df[,2]==3),]
      
      View(df)
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 2016-07-11
        • 2016-07-27
        • 2018-05-30
        • 2019-05-29
        • 2018-07-15
        • 2023-03-13
        • 2021-06-24
        • 1970-01-01
        相关资源
        最近更新 更多