gpt4 book ai didi

r - dplyr/tidyr - 根据条件汇总数据

转载 作者:行者123 更新时间:2023-12-04 02:16:05 25 4
gpt4 key购买 nike

问题我正在尝试使用 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 reshape 数据……

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 和 summarize 的组合,我试过了......

df %>% group_by(sentiment) %>%
summarise(Negative = count("sentiment_title"<0),
Neutral = count("sentiment_title"=0),
Positive = count("sentiment_title">0)
)

显然这没有用。

任何人都可以帮助提供 dplyr/tidyr 解决方案(基表答案也可以用作示例)吗?

最佳答案

试试

library(dplyr)
library(tidyr)
gather(df) %>%
group_by(key,value= sign(value))%>%
tally() %>%
mutate(ind= factor(value, levels=c(-1,0,1),
labels=c('Negative', 'Neutral', 'Positive'))) %>%
select(-value) %>%
spread(ind, n, fill=0)

关于r - dplyr/tidyr - 根据条件汇总数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com