首页 > 解决方案 > 使用 ID 对虚拟表值进行分组

问题描述

我有一个虚拟表,如果您有产品,则为 1,如果没有,则为 0。该表专注于产品,因此每条线都有客户和产品。

但是,一个客户可以有多个产品并出现在许多行中。我想将所有产品(按总和或计数)分组在一行中。例子:

Nulls 应该是零以使解决方案查询起作用

Nulls 应该是零以使解决方案答案查询起作用

我需要这个:

在此处输入图像描述

标签: r

解决方案


一个选项使用dplyr

library(dplyr)

df %>% group_by(Client) %>% summarise_at(vars(TC:CA), function(x) sum(x))

 # Client    TC    CC    CA
#1 654        2     1     0
#2 666        0     0     1
#3 667        0     1     0

数据

df <- structure(list(Product = structure(c(3L, 3L, 2L, 1L, 2L), .Label = c("CA", 
"CC", "TC"), class = "factor"), Client = structure(c(1L, 1L, 
1L, 2L, 3L), .Label = c("654", "666", "667"), class = "factor"), 
    TC = c(1, 1, 0, 0, 0), CC = c(0, 0, 1, 0, 1), CA = c(0, 0, 
    0, 1, 0)), .Names = c("Product", "Client", "TC", "CC", "CA"
), row.names = c(NA, -5L), class = "data.frame")

推荐阅读