r - 如何按两个条件进行分组并计算所有行是否满足另一个条件

标签 r group-by

我有以下表单数据:

Household <- rep(c("1", "2", "3", "4"), each = 3) 
Product <- c(21,21,19,18,21,21,11,11,19,16,16,12) 
Discount <- c(0,1,0,0, 0.5,1,0.5,1,0,0,0,1)

data <- data.frame(Household = Household, Product = Product, Discount = Discount)

我想计算一个家庭总是以折扣价购买产品的次数。

Household <- c(2, 3)
Product <- c(21, 11)
result <- data.frame(Household = Household, Product = Product)

非常感谢。

我尝试过按家庭和产品进行分组,并在折扣 >0 时进行汇总,但这告诉了我以折扣购买的家庭的个别购买实例。根据我的查询,我认为 SQL 中的“having”等价物会有所帮助。

最佳答案

使用dplyr我们可以做到:

library(dplyr)

data |>
  count(Household,
        Product,
        wt = Discount > 0) |>
  filter(n > 1)

或者可能更清楚一点:

library(dplyr)

data |>
  group_by(Household, Product) |>
    filter(Discount > 0) |>
    tally() |>
    filter(n > 1) |>
  ungroup()

输出:

# A tibble: 2 × 3
  Household Product     n
  <chr>       <dbl> <int>
1 2              21     2
2 3              11     2

关于r - 如何按两个条件进行分组并计算所有行是否满足另一个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75508036/

相关文章:

r - 将数据帧拆分为多个输出文件

mysql 按设置 id 进行分组

mysql - mysql如何合并列的值

r - 按顺序计算 R 中一列中的相同组

r - 使用 gridExtra 排列 GGally 图?

sql - 在一个查询中使用 group by 计算多列

sql - 每组匹配行的比率

mysql - SQL 对每个 userID 记录计算一个值,但 userId 的一个记录值为 x 的情况除外

r - 如何向数据框中添加空行?

r - 如何从另一列的组合中创建多列?