【问题标题】:Extract text after a symbol in R在R中的符号后提取文本
【发布时间】:2016-08-31 06:46:17
【问题描述】:
sample1 = read.csv("pirate.csv")
sample1[,7] 
[1] >>xyz>>hello>>mate 1
[2] >>xyz>>hello>>mate 2
[3] >>xyz>>mate 3
[4] >>xyz>>mate 4
[5] >>xyz>>hello>>mate 5
[6] >>xyz>>hello>>mate 6

我必须提取并创建一个数组,其中包含最后一个 >> 之后的所有单词。

如何做到这一点?

另外,如何从以下字符串中提取不同变量中的 (a) o qwerty、(b) mate1 和 (c) pirate1

p= '>>xyz- o qwerty>>hello>>mate1>>sole pirate1'

谢谢

【问题讨论】:

  • 为什么会有r 标签。 r 和 excel 中都需要它吗?
  • 是的,我必须以矢量形式从 excel 文件中提取一列到 r
  • 参见 read.csv 参数标题和 nrows。这应该让你开始阅读。关于这个有很多关于 SO 的问题。
  • 您要始终提取最后一个单词还是只提取 'ahoy' 之后的单词?
  • 这不是最后一个单词或 ahoy 之后的单词...我的动机是提取字符串中的特定单词,例如从字符串“>>hello1>>hola1>>ahoy 中提取“stuff data” xyz 东西数据 mate1"

标签: regex r text-mining extraction


【解决方案1】:

假设您已经将这些内容读入 R 数据框中,您可以使用 stringr 包,如下所示:

library(stringr)
str_extract(df$mystring, '\\S+$')

例如,如果你有这样的字符串:

s <- '>>hello1>>hola1>>ahoy mate1'

你得到:

str_extract(s, '\\S+$')
[1] "mate1"

【讨论】:

  • 或者只是sub('.* ', '', s),但我认为他的问题也与在 R 中导入数据有关......
  • 是的。同意。我引导人们使用多功能的软件包,以便他们可以根据需要针对不同的问题做更多的事情。
  • all the words after last &gt;&gt; 在你的例子中应该是ahoy mate1
【解决方案2】:
x <- c('>>xyz>>hello>>mate 1', '>>xyz>>hello>>mate 2', '>>xyz>>mate 3', ' >>xyz>>mate 4' ,'>>xyz>>hello>>mate 5')
sub('.*>>', '', x)
#[1] "mate 1" "mate 2" "mate 3" "mate 4" "mate 5"

【讨论】:

  • 您将给出 x 向量中第 7 列的每一行名称。 1)如何传递向量中的整个列(因为这些只有 6 行,但我处理的行超过 100 行) 2)我还想提取两个特定符号之间的文本,例如。 >>xyz-qwerty>>hello>>mate1>>pirate1 在上面我想在两个单独的变量中提取 qwerty 和 hello。请帮帮我。谢谢
  • 好吧,选择单个列,然后将x 替换为sample1$...sample1[,7]。要提取其他术语,您需要更新您的问题并提供更多详细信息。
  • 怎么样:gsub('.* ', "", unlist(strsplit(p, '&gt;&gt;')))
  • 它给了我这样的结果 ["" "" "" "pirate1"]
  • 它应该给你这个:[1] "" "qwerty" "hello" "mate1" "pirate1"
猜你喜欢
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2014-02-01
相关资源
最近更新 更多