我最近开始训练自己的情绪分析。我有一个如下所示的数据集:initial data
原始数据包括对葡萄酒的评论,每排一个。我所做的就是对其进行标记化,并使用其中一个R词典进行基本的情感分析。正如可以在screentshot中看到的那样。列X指的是初始数据框中的原始行。我现在想要做的是计算净效应(看看每个行的正面或负面,但每个原始行(X)的数量,并将其作为一列附加)。 我尝试使用以下代码,但它不起作用:
per_row <- unigrams_all_ns %>%
inner_join(get_sentiments("bing"),by=c("unigram"="word"))%>%
group_by(X)%>%
spread(sentiment, n, fill = 0)
我收到以下错误
错误:var
必须评估为单个数字或列名称,而不是函数
答案 0 :(得分:1)
您要做的是计算X
中每组的正面和负面字数。您可以在dplyr包中使用count()
。根据您的尝试,您似乎希望获得宽格式数据。所以我使用了spread()
。我想你可以自己从这里做更多的事情。
library(dplyr)
library(tidyr)
library(tidytext)
unigrams_all_ns <- data.frame(X = c(1,2,2,2,2,3,3,3,4,4),
unigram = c("smooth", "snappy", "dominate", "crisp", "stainless", "lemon",
"blossom", "opulent", "rough", "pleasantly"),
stringsAsFactors = FALSE)
unigrams_all_ns %>%
inner_join(get_sentiments("bing"), by =c("unigram" = "word"))%>%
count(X, sentiment) %>%
spread(key = sentiment, value = n, fill = 0)
X negative positive
<dbl> <dbl> <dbl>
1 1.00 0 1.00
2 2.00 0 4.00
3 3.00 1.00 2.00
4 4.00 1.00 1.00