首页 > 解决方案 > 在 R 中根据之前的特定单词和之后的 % 符号提取字符串或值

问题描述

我有一个包含数千行段落的文本列,我想提取“ Capacity > x%”的值。操作符号可以是>,<,=, ~...我基本上需要操作符号和整数值(例如<40%)并将其放在它旁边的列中,同一行。我已经尝试过,删除之前/之后的文本,,,gsub, grepgrepl, string_extract。没有一个很好的结果。我不确定百分比符号是否在抛出它,或者我只是没有得到代码结构。感谢您的帮助。这是我尝试过的一些代码(aa 是 df,TEXT 是 col 名称):

str_extract(string =aa$TEXT, pattern = perl("(?<=LVEF).*(?=%)"))

gsub(".*[Capacity]([^.]+)[%].*", "\\1", aa$TEXT)

genXtract(aa$TEXT, "Capacity", "%")

gsub("%.*$", "%", aa$TEXT)

grep("^Capacity.*%$",aa$TEXT)

标签: rstringfilteringtext-miningtext-extraction

解决方案


由于您没有提供可重现的示例,因此我自己创建了一个并在此处使用它。

我们可以使用sub提取"Capacity"直到一个数字和%符号之后的所有内容。

sub(".*Capacity(.*\\d+%).*", "\\1", aa$TEXT)
#[1] " > 10%"  " < 40%"  " ~ 230%"

或与str_extract

stringr::str_extract(aa$TEXT, "(?<=Capacity).*\\d+%")

数据

aa <- data.frame(TEXT = c("This is a temp text, Capacity > 10%", 
                    "This is a temp text, Capacity < 40%", 
                    "Capacity ~ 230% more text  ahead"), stringsAsFactors = FALSE)

推荐阅读