如何使用dplyr按列分组,然后再添加一个
How to use dplyr to group by column and then add another more
我最近开始训练自己的情绪 analysis.I 有一个看起来像这样的数据集:initial data
原始数据包含对葡萄酒的评论,每行一条。我所做的是对其进行标记化,并使用 R 词典之一进行基本的情绪分析。从屏幕截图中可以看出蜜蜂。 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
的计算结果必须是单个数字或列名,而不是函数
你要做的是统计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
我最近开始训练自己的情绪 analysis.I 有一个看起来像这样的数据集:initial data
原始数据包含对葡萄酒的评论,每行一条。我所做的是对其进行标记化,并使用 R 词典之一进行基本的情绪分析。从屏幕截图中可以看出蜜蜂。 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
的计算结果必须是单个数字或列名,而不是函数
你要做的是统计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