【问题标题】:Deleting Rows by condition [duplicate]按条件删除行[重复]
【发布时间】:2018-03-05 02:39:40
【问题描述】:

下面是描述我的数据框的图像,我希望有条件地删除所有写有“范围”的城市名称,如 sn-p 所示。我尝试了各种方法,但到目前为止还没有成功。

【问题讨论】:

  • 一些生成数据的代码比截图有用得多,它会帮助其他人帮助你。请参阅reprex.tidyverse.org 了解如何制作代表。

标签: r dplyr


【解决方案1】:

有两件事:检测字符向量中的模式,可以使用stringr::str_detect() 并提取行的子集,这就是dplyr::filter() 的目的。

library(dplyr)
library(stringr)
df <- df %>%
  filter( ! str_detect(City, "Range") )

【讨论】:

    【解决方案2】:

    使用带有反转选项的grep 来选择所有没有Range 的行。

    yourDataFrame <- yourDataFrame[grep("Range", yourDataFrame$City, invert = TRUE), ]
    

    【讨论】:

    • 如果grep 没有返回匹配项(integer(0)),您将遇到麻烦。 grepl 更安全。
    • 非常感谢您的解决方案,您的解决方案解决了我的问题 :)
    猜你喜欢
    • 2021-12-11
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2012-06-05
    • 2021-04-02
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多