问题 我试图使用dyplr和tidyr来实现一个输出表格(类似于列联表),该表格将此数据汇总为频率(例如,标题、描述和正负数的计数)。 我尝试了许多不同的方法,最接近的例子是在Using Tidyr/Dplyr to summarise counts of groups of strings上找到的。 但这并不完全符合我的要求。
示例数据 数据看起来有点像...
df <- data.frame( "story_title"=c(0.0,0.0,0.0,-1.0,1.0),
"story_description"=c(-0.3,-0.3,-0.3,0.5,0.3),
"story_body"=c(-0.3,0.2,0.4,0.2,0))
期望输出结果 输出结果应该类似于这样,显示每个故事部分的摘要频率...
Negative Neutral Positive
story_title 1 3 1
story_description 3 0 2
story_body 1 1 3
(为story_body编辑的总数-感谢Akrun)
尝试的方法
如果我没错的话,第一步将是使用gather
来重新塑造数据,如下所示...
df <- df %>% gather(type,score,starts_with("story"))
> df
type score
1 story_title 0.0
2 story_title 0.0
3 story_title 0.0
4 story_title -1.0
5 story_title 1.0
6 story_description -0.3
7 story_description -0.3
8 story_description -0.3
9 story_description 0.5
10 story_description 0.3
11 story_body -0.3
12 story_body 0.2
13 story_body 0.4
14 story_body 0.2
15 story_body 0.0
我认为这里需要使用 group_by 和 summarise 的组合,我已经尝试过...
df %>% group_by(sentiment) %>%
summarise(Negative = count("sentiment_title"<0),
Neutral = count("sentiment_title"=0),
Positive = count("sentiment_title">0)
)
显然这种方法并没有起作用。
有人能提供一个dplyr/tidyr的解决方案吗(一个基础表格的答案也会很有用作为一个例子)?
story_body
应该是1 1 3
。 - akrun