我正在尝试执行情绪分析并遇到一个小问题。我正在使用具有主题标签和其他一些垃圾值的字典(如下所示)。它还具有主题标签的相关权重。我只想将主题标签及其相应的权重提取到一个新的数据框中。有什么简单的方法吗? 我试过使用 regmatches,但有些它如何以列表格式给出输出并且把事情搞砸了。 输入:
V1 V2
1 #fabulous 7.526
2 #excellent 7.247
3 superb 7.199
4 #perfection 7.099
5 #terrific 6.922
6 #magnificent 6.672
输出:
V1 V2
1 #fabulous 7.526
2 #excellent 7.247
3 #perfection 7.099
4 #terrific 6.922
5 #magnificent 6.672
最佳答案
要仅选择作为主题标签的条目,您可以使用简单的正则表达式 ^#
(意思是“任何以 # 开头的内容”):
> input[grepl("^#",input[,1]),]
V1 V2
1 #fabulous 7.526
2 #excellent 7.247
4 #perfection 7.099
5 #terrific 6.922
6 #magnificent 6.672
否则,从您的原始数据来看,正则表达式 #[[:alnum:]]+
(意思是:“一个主题标签,后跟 1 个或多个字母数字字符”)应该可以帮助您获取主题标签:
> tweets <- c("New R job: Statistical and Methodological Consultant at the Center for Open Science http://www.r-users.com/jobs/statistical-methodological-consultant-center-open-science/ … #rstats #jobs","New R job: Research Engineer/Applied Researcher at eBay http://www.r-users.com/jobs/research-engineerapplied-researcher-ebay/ … #rstats #jobs")
> match <- regmatches(tweets,gregexpr("#[[:alnum:]]+",tweets))
> match
[[1]]
[1] "#rstats" "#jobs"
[[2]]
[1] "#rstats" "#jobs"
> unlist(match)
[1] "#rstats" "#jobs" "#rstats" "#jobs"
关于r - 从推文中提取主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168226/