我正在尝试对Twitter数据进行一些情绪分析。我有一个字典(afinn_list),如下所示
我已经能够生成一个包含每个匹配单词位置的字符变量。现在我想生成一个得分变量,它将包含这些匹配的相应分数。我很难想出一个for循环逻辑。
类(afinn_list)
[1]“data.frame”
vPosMatches< - match(words,afinn_list $ word)
vPosMatches
[1] NA NA NA NA 1104 NA NA NA NA NA NA NA NA NA NA NA NA 1836 NA
如果这个问题太天真,我很抱歉。我只是想用R来学习情绪分析。
答案 0 :(得分:0)
情绪分析是一项复杂的任务。假设您已从twitter清理数据并将其存储为每个单元格中的1个单词,我猜您现在缺少的是使用您的评分“词典”words
在afinn_list
中对已清理的数据进行评分。
假设你的单词是afinn_list,就像这样
dictionary <-data.frame(grade=c('bad','not good', 'ok', 'good','very good'), score=1:5))
# grade score
1 bad 1
2 not good 2
3 ok 3
4 good 4
5 very good 5
和你的mock_data(从twitter清理数据)是
mock_data<-data.frame(data=rep(x=c('good','bad','rubbish','hello','very good'),10))
# data
1 good
2 bad
3 rubbish
4 hello
5 very good
6 good
您将在2个数据框之间进行合并。在SQL世界中,它将是一个左外连接。在R中,它使用函数merge
实现,并提供您希望加入的列和all.x=True
因此,您的代码将如下所示
merge(mock_data, dictionary, by='data', all.x=TRUE)
我希望你回答这个问题。
干杯