【问题标题】:how to remove specific character from rows of dataframe in R如何从R中的数据框行中删除特定字符
【发布时间】:2020-12-21 07:35:04
【问题描述】:

我有一个包含三列的数据框,第一列是 Species_Name,其中包含所有物种名称,但我想删除那些未确定的行,如“Salmonella sp”,并只想保留那些具有完整确定名称的行,如沙门氏菌enterica 或 bongori 等。我尝试了以下代码,但它不起作用。请提出任何建议。

dfcox1 <- dfcox1 %>%
filter(Species_Name != "Salmonella sp")

【问题讨论】:

  • 请提供足够的数据来重现该问题。您可以使用dput(dfcox1),或者,如果它是一个大数据框,只需足够的行来显示filter 的失败位置。
  • 试试:dfcox1 %&gt;% filter(trimws(Species_Name) != "Salmonella sp")

标签: r tidyverse


【解决方案1】:

欢迎访问 stackoverflow.com!请创建reproducible examples,以便其他人可以更轻松地帮助您,which is especially easy when working with GNU R

如果您想根据特定的正则表达式删除数据框中的一行(例如以sp结尾的行名),您可以这样做):

iris %>%
  dplyr::filter(!stringr::str_detect(Species, "sp"))

【讨论】:

  • 请注意,使用str_detect,您可以设置negate = TRUE,而不是使用! 进行否定。即便如此,我不确定这是否完全回答了为什么 OP 的解决方案不起作用的问题。我以前也遇到过同样的问题,我也求助于str_detect,但似乎并不总是必要的。看到 OP 的实际 dfcox1 会很有趣,以便更好地诊断实际出了什么问题。
  • @andrew_reece:好点,我没想到negate = TRUE。关于str_detect-string 的必要性:也许直接指定正则表达式会更好(例如,通过编写sp$ 以便sp-part 必须位于文本的末尾)。
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多