【问题标题】:Extract specific value from a string variable in r从r中的字符串变量中提取特定值
【发布时间】:2020-10-06 16:38:29
【问题描述】:

我有一个字符变量。我需要从title="" 值中提取信息。基本上,我需要"" 中的所有值,就在title= 之后。

这是示例数据集:

df <- data.frame(
  id = c(1,2,3),
  character = c('mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h+r=2"&gt;&lt;mstyle',
        'mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="r+2h=h"&gt;&lt;mstyle&',
        'mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h∙rleft(frac{2h}{2}right)"&gt;&lt;mstyle&gt'))

> df
  id                                                                                                  character
1  1                        mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h+r=2"&gt;&lt;mstyle
2  2                      mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="r+2h=h"&gt;&lt;mstyle&
3  3 mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h·rleft(frac{2h}{2}right)"&gt;&lt;mstyle&gt

我想要的输出是:

> df
  id                 character
1  1                     h+r=2
2  2                    r+2h=h
3  3 h·rleft(frac{2h}{2}right)

【问题讨论】:

  • within(df, character &lt;- gsub('title="([^"]+)|.', '\\1', df$character)) 你不需要额外的包

标签: r string extract


【解决方案1】:

试试这个

library(dplyr)
df %>% mutate(character = sub(".+title=\"(.+)\".+", "\\1", character))

【讨论】:

    【解决方案2】:

    您应该使用 regex101 创建一个合适的正则表达式:

    https://regex101.com/r/OFJhnQ/1

    那么就可以使用str_extract来获取值了。

    或者你使用 tidyr 的 extract 函数:

    df %>% tidyr::extract(character, "title", regex="title=\"(.+)\"")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多