【问题标题】:select text from multiple combinations of text within a dataframe R从数据框R中的多个文本组合中选择文本
【发布时间】:2020-02-04 20:04:22
【问题描述】:

我想根据一个文本代码对数据进行子集化,该文本代码在 df 的一列中以多种组合形式使用。我首先通过创建表格检查了所有变体。

 list <-  as.data.frame(table(EQP$col1))

我想在数据框中搜索文本“EFC”(即使与其他字母组合)并将这些行子集化,以便我得到一个看起来像这样的结果数据框。

我在这里查看了这个问题,但这并没有回答这个问题。我已经查看了 tidytext 包,但这似乎也不是解决方案。

How to Extract keywords from a Data Frame in R

【问题讨论】:

  • 您是要对行进行子集化还是同时做其他事情?你能提供一个working example吗?
  • 仅对第 1 列中具有“EFC”(任意组合)的行进行子集化

标签: r text subset tidytext


【解决方案1】:

您可以简单地使用grepl

考虑到您的 data.frame 被称为 df 并且子集所在的列是 col1

df <- data.frame(
    col1 = c("eraEFC", "dfs", "asdj, aslkj", "dlja,EFC,:LJ)"),
    stringsAsFactors = F
)

df[grepl("EFC", df$col1), , drop = F]

【讨论】:

  • 嗨。我试过这个 - 包“grepl”不可用(对于 R 版本 3.6.1)
  • grepl 不是一个包,它是一个基本的 R 函数。你到底尝试了什么?
【解决方案2】:

除了 Gallarus 提到的解决方案之外的另一个选择是:

library(stringr)
library(dplyr)
df %>% filter(str_detect(Var1, "EFC"))

正如 Sam Firke 在这篇文章中所描述的:

Selecting rows where a column has a string like 'hsa..' (partial string match)

【讨论】:

  • 如果你想包含多个“文本”怎么办,df %>% filter(str_detect(Var1, "EFC", "ADE")) 不起作用...
  • 类似 df %>% filter(str_detect(Var1, pattern = "EFC|ADE")) 的东西会起作用(如果你想返回包含这些部分字符串的 df。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多