【问题标题】:How to remove a big chunk of text from dataframe in R Studio如何从 R Studio 中的数据框中删除大量文本
【发布时间】:2021-08-02 04:04:05
【问题描述】:

我有一个网站文章的大数据框,它是通过自动刮刀收集的,其中包含“文本”和“网站”两列。问题是我在我收集的一个网站的所有文章中发现了大量无用的文本。

文本始终相同,并通过这些行说明“点击此处,您接受使用 cookie //rn 如果您想订阅,请点击下面的链接。//rn。订阅即表示您接受我们的隐私政策 //rn 了解更多信息,请点击此链接"

我想找到一种方法来清除此消息中的所有文本字段,但到目前为止我无法做到。

这是我的数据框示例

df

文字
这是文本 1。点击此处即表示您接受使用 cookie //rn 如果您想订阅,请点击下面的链接。 //rn。订阅即表示您接受我们的隐私政策 //rn 了解更多信息,请单击此链接

这是文本 2

这是文本 3

这是文字 4

期望的结果:

df

文本 这是文本 1

这是文本 2

这是文本 3

这是文字 4

这是我尝试过的

to_remove<-"By clicking here you accept the use of cookies //rn If you would like to subscribe please click on the link below. //rn. By subscribing you accept our privacy policy //rn for more information click on this link"

df<-gsub(to_remove, "", df$text)

唉,我收到以下错误消息: error in (gsub(to_remove, "", df$text)): invalid regular expression

我也尝试写下没有斜线和其他符号的文本,但我得到了相同的错误消息

有人知道有什么函数可以用来从这么大的文本中清除我的数据集吗?

【问题讨论】:

  • 此文本 to_remove 是否始终位于实际文本的末尾?此外,您应该将gsub 的输出分配给df 的一列,即df$text,而不是整个df

标签: r text data-cleaning gsub


【解决方案1】:

您的代码中需要注意的一个错误是

df<-gsub(to_remove, "", df$text)

应该替换为

df$text <-gsub(to_remove, "", df$text)

您可能遇到的另一个问题是您可能将数据框的每一行都作为不同的句子,在这种情况下,您的替换将不起作用。要解决此问题,您可以使用

将文本组合成单个字符串
single_str_text = paste(df$text, collapse = ' ')

使用这个单个字符串,您可以执行正则表达式删除

gsub("By clicking here you.*for more information click on this link",
 '', 
 single_str_text)

【讨论】:

  • 谢谢,这真的很有用!
【解决方案2】:

sub/gsub 应该可以工作,但与其复制整个文本,为什么不删除'By clicking here you' 之后的所有内容。没有这些词的文本不会被改变。

df$text <- sub('By clicking here you.*', '', df$text)

【讨论】:

  • 感谢您的建议。我试过了,但它只删除了那部分并留下了所有其余部分,这是一段相当长的文本。我应该更改一些其他参数吗?
  • 您能否提供可重现的数据样本?使用 dput(head(df, 10)) 的输出更新您的帖子
  • 抱歉回复晚了,我使用正则表达式管理它"By clicking here you(.*)/?"非常感谢您的宝贵帮助!
猜你喜欢
  • 2018-01-05
  • 2017-08-06
  • 1970-01-01
  • 2020-05-28
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
相关资源
最近更新 更多