如何根据包含特定单词的另一个变量创建包含值的新变量?

时间:2016-01-19 10:07:13

标签: r

我有这个数据集,其中包含大量文章的信息:

ID number, Header, Rubric, Article Text, Date. 

我想根据内容对文章进行排序,即我想使用“if”语句创建一个新变量:

  • “if”变量'Article Text'包含字符串'Second World War'“然后”'New Variable'= 1和
  • “if”变量'Article Text'包含单词'Syria'“然后”'New Variable'= 2.
  • 此后我想根据“新变量”的值创建新的数据集。

我希望能够尝试不同的方法,看看什么效果更好/给我更正确的aricles排序 - 比如调节

  • 一个字
  • 围绕同一主题的几个词(全部在文本中)
  • 围绕相同主题的几个单词(文本中的一个或多个)
  • 一个单词字符串

所以我要求的是帮助理解我需要创建的基本设置,以便能够使用不同的非常简单的文本分析工具来对我的数据集进行排序。

提前致谢

1 个答案:

答案 0 :(得分:0)

最小的例子就是:

# An example data.frame containing some combinations of letters:
data <- data.frame(a=paste0(LETTERS[1:3],LETTERS[3:5]))

# Replace this with the strings you want to search for:
strings <- c("A", "C")
# And this with the names for the new columns:
names(strings) <- c("colA", "colB")

# Search for the strings and create new columns, replace $a according to your column-names:
data <- cbind(data, data.frame(lapply(strings, grepl, data$a)))

这是做什么的:

grepl在第二个参数的字符向量中搜索第一个参数中定义的模式,如果模式匹配与否则返回TRUEFALSE

lapply将第二个参数中的函数应用于第一个元素中列表的所有元素,并将所有其他agruments用作第二个arguemnt中函数的附加agruments。拉普利返回一份清单。

as.data.frame从列表中删除data.frame

cbind最终将新数据框的列绑定到旧数据框。

同样,逐行运行代码并输出中间值,并查看已使用函数的帮助条目。