我有以下表单数据:
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/