r - 在一个新组下折叠数据框值
问题描述
我已经做了一些寻找这个问题的答案,但是,我不完全确定如何提出这个问题,所以在大多数情况下,搜索一直没有结果。
假设我有一个看起来像这样的 DF
customer, revenue
a, 2000
b, 2000
c, 3000
Microsoft, 4000
Oracle, 5000
我想得到一个有三个堆栈的堆积条形图......其他,甲骨文和微软。其他将是折叠所有不是微软或甲骨文的东西并将收入相加的结果。微软和甲骨文将自立门户。
条形图将是一个条形图,总值为 16,000,单个堆栈为 (Other=7000, Microsoft = 4000, Oracle=5000)
希望这是有道理的。
我现在的代码将分别列出所有客户。实际上,这里有更多的客户,因此条形图将无法阅读。
finalData <- finalData %>%
group_by(product, customer) %>%
summarize(revenue = sum(revenue))
是否有一些我可以执行的变异或附加 group_by 操作将折叠不在standAloneCustomers 中的所有内容并将其命名为“其他”?
感谢您的帮助。
解决方案
我们可以replace
将“Microsoft”、“Oracle”以外的值改为“Other”并summarise
获得sum
“收入”
library(dplyr)
library(ggplot2)
finalData %>%
group_by(product, customer = replace(customer,
!customer %in% c("Microsoft", "Oracle"), "Other")) %>%
summarise(revenue = sum(revenue)) %>%
ggplot(aes(x= product, y=revenue, fill = customer)) +
geom_col()
数据
finalData <- structure(list(customer = c("a", "b", "c", "Microsoft", "Oracle"
), revenue = c(2000, 2000, 3000, 4000, 5000), product = c("A",
"A", "A", "A", "A")), row.names = c(NA, -5L), class = "data.frame")
推荐阅读
- css - 使用 @each 的 nth-child 自动增量 - SASS
- javascript - 谷歌图表不添加行
- javascript - Atom 执行错误 - /usr/bin/env: 'node': No such file or directory
- flutter - Flutter 小部件:如何制作日历小部件,用户可以用手指拖动日期范围?
- swift - 来自不同类的颜色代码在主类 Swift 中不显示正确的颜色?
- php - 如何在 html 标签中使用会话变量的值
- python - PermissionError:[Errno 13] 导入熊猫库时权限被拒绝错误
- spring-boot - spring boot 执行器可以公开远程 jvm 指标吗?
- reactjs - 状态未使用 react-redux 中的 useSelector 使用分配的常量更新
- sql - 插入旧记录并用新记录替换