【问题标题】:Finding tweets containg a keyword in R and updating在 R 中查找包含关键字的推文并更新
【发布时间】:2018-05-21 22:17:23
【问题描述】:

我使用 R 来查找字符串中的单词,这样我可以将它们分类为 2 列。我使用 grep 来查找关键字存在的所有行,但是如果字符串中存在关键字,我无法编写循环来更新值为 1 的另一列。 Tweet.Text 是包含字符串的列名,@casekeenum7 是我要查找的关键字,而 Keenum 是我要更新的列,其中包含该关键字的每一行的值都为 1。

代码:

for (i in 1:length(Tweet.Text)){
  if(grep('@casekeenum',Tweet.Text[i])){
    Keenum[i]==1
  }
}

错误:

Error in if (grep("@casekeenum7", Tweet.Text[i])) { : 
  argument is of length zero

【问题讨论】:

  • grep 返回一个数字索引。可能您需要grepl BTW,您可能不需要for 循环,即as.integer(grepl('@casekeenum', Tweet.Text)) 如果我们只需要更改TRUE 的值,则返回二进制值,然后Tweet.Text[grepl('@casekeenum', Tweet.Text)] <- 1

标签: r dataframe loops twitter


【解决方案1】:

你不需要 for 循环:

df = data.frame(Tweet.Text=c("Hello","@casekeenum"),
                Keenum=c(0,0))


df$Keenum[grepl("@casekeenum",df$Tweet.Text)]=1

返回:

   Tweet.Text Keenum
1       Hello      0
2 @casekeenum      1

【讨论】:

  • 谢谢!那行得通。 1 快速添加问题。我将如何检查 2 个关键字。 @casekeenum 和 #casekeenum?
  • 您可以使用| 运算符(或简单地创建两行)。示例:df$Keenum[grepl("@casekeenum|#casekeenum",df$Tweet.Text)]=1
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2019-01-13
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多