【问题标题】:How to extract a specific number of characters before and after a keyword in R?如何在R中的关键字前后提取特定数量的字符?
【发布时间】:2021-12-24 06:40:58
【问题描述】:

我有一个数据框 (data),其中有一列包含报告中的文本 (data$Report_Text)。我需要为每行提取关键字(包括关键字)前后的 40 个字符,并将其作为新列存储在数据框中。

到目前为止,我已经为之前的字符提供了此功能(理想情况下,我希望将 + 之前的文本存储在一列中,但如果这不可能,我可以做两列):

data$characters <- sub('.*?(\\d{40}) keyword', "", data$Report_Text)

但是,当我运行它时,它会给出关键字之前的所有文本,而不仅仅是 40 个字符。我哪里错了?

【问题讨论】:

  • 我会尝试类似stringr::str_extract(".{40}keyword.{40}")。如果字符串中少于 40 个字符,您希望尽可能多的字符,请使用 {,40} 作为量词。
  • 这成功了!谢谢!

标签: r extract


【解决方案1】:
data$characters <- gsub("^.*(.{40}keyword.{40}).*$", "\\1", data$Report_Text))

可以将{40} 之前的. 更改为\\d(仅数字)或您偏好的字符类型。

【讨论】:

  • 谢谢,但这仍然给了我文本中的所有字符。
  • @Jordan 我更新了答案。尝试使用gsub 而不是sub。请注意在字符串的开头和结尾使用^$。如果它还返回所有文本,则可能文本每边少于 40 个字符,或者可能不包含关键字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多