r - R中具有类别和子类别的多个熔体
问题描述
我有以下数据:
structure(list(Filters = structure(c(4L, 2L, 6L, 5L, 1L, 3L,
7L), .Label = c("product type : shade || shade family : white",
"space : bedroom || product type : appliances", "space : bedroom || shade family : white",
"space : living room || product type : shade || shade family : white",
"space : living room || product type : shade|appliances", "space : living room || shade family : white|black",
"space : living room || shade family : yellows & greens"), class = "factor"),
Count = c(143L, 131L, 119L, 101L, 94L, 84L, 82L)), class = "data.frame", row.names = c(NA,
-7L))
我想获得数据中可用的每个类别和子类别的计数总和。此外,如果类别有多个子类别,那么每个类别都应该有每个类别的总和。
例如,要获得(产品类型:电器)=> 产品类型:电器和产品类型:灯罩|电器都符合条件。
我正在寻找如下输出:
Category Count
1 space 660
2 product type 469
3 shade family 522
4 space : living room 445
5 product type : shade 338
6 product type : appliances 232
7 So on …. ..
提前致谢。
解决方案
一种方法是使用separate_rows
and separate
:
library(dplyr)
library(tidry)
df %>%
separate_rows(Filters,sep = " \\|\\| ") %>%
separate(Filters, into = c("Category","Subcategory")," : ") %>%
group_by(Category, Subcategory) %>%
summarise(Count = sum(Count)) %>%
bind_rows(group_by(.,Category) %>%
summarize(Count = sum(Count)) %>%
mutate(Subcategory = "Total")) %>%
separate_rows(Subcategory,sep = "\\|") %>%
arrange(-Count)
# A tibble: 13 x 3
# Groups: Category [3]
Category Subcategory Count
<chr> <chr> <int>
1 space Total 660
2 shade family Total 522
3 product type Total 469
4 space living room 445
5 shade family white 321
6 product type shade 237
7 space bedroom 215
8 product type appliances 131
9 shade family white 119
10 shade family black 119
11 product type shade 101
12 product type appliances 101
13 shade family yellows & greens 82
感谢@Bishops_Guest 的回答给我一些启发。
推荐阅读
- compiler-errors - 后缀符号的方式和原因
- php - mysqli_real_escape_string() 在数据库中不起作用
- ios - IOS iMessage扩展截图检测
- css - 如何使用 XSL 在 XML 中的特定 td 中保留新行和空白
- python - 按下按钮后如何更改TextInput文本
- python - How to Json query in Ansible
- php - 使用 Carbon (Laravel 5.4) 比较刀片中的时间
- c# - 基于下拉列表选择值的文本框消息
- gmail - Google Gmail API 订阅为每封新邮件或已发送电子邮件发布两个 Webhook 响应
- ruby - 为什么将 1 添加到递归 proc 调用会返回调用次数?