You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对分组数据应用统一公式计算新变量unitats_consum

分组计算unitats_consum变量的解决方案

数据集信息

数据集unitatsconsum_2021的结构如下:

structure(list(NUMERO = structure(c(21, 22, 22, 22, 23, 23, 23, 
24, 24, 25, 25, 25, 25, 26, 27, 28), format.stata = "%12.0g"), 
    unitats_consum = c(2, 2, 2, 2, 2, 2, 1.9, 1.5, 1.5, 2.5, 
    2.5, 2.5, 2.2, 1, 1, 2), edat = c(17, 51, 17, 14, 44, 36, 
    3, 67, 63, 35, 48, 17, 13, 73, 67, 73), membresllar = c(3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 1L, 3L
    )), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -16L), groups = structure(list(NUMERO = structure(c(21, 
22, 23, 24, 25, 26, 27, 28), format.stata = "%12.0g"), .rows = structure(list(
    1L, 2:4, 5:7, 8:9, 10:13, 14L, 15L, 16L), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -8L), .drop = TRUE))

需求说明

需要计算新的unitats_consum变量,公式为:
1 + 0.5*((edat>13的观测数)-1) + 0.3*(edat<=13的观测数)
要求同一NUMERO分组内的计算结果完全一致。

错误代码分析

你之前的代码问题在于:

  • 用逐行判断的ifelse,没有统计整组内符合条件的观测总数
  • 错误引用membresllar字段,而非实际统计的观测数量

错误代码:

Unitatsconsum_2021 <- Unitatsconsum_2021 %>%
  group_by(NUMERO) %>%
  mutate(unitats_consum = (1 + 
                             0.5 * (ifelse(edat > 13, membresllar - 1, 0)) +
                             0.3 * (ifelse(edat <= 13, membresllar, 0))))

正确解决方案

在分组内用sum()统计每组中edat>13和edat<=13的观测数量,再代入公式计算,确保同一NUMERO的结果一致:

unitatsconsum_2021 <- unitatsconsum_2021 %>%
  group_by(NUMERO) %>%
  mutate(
    # 统计每组内edat>13的观测数
    count_over13 = sum(edat > 13),
    # 统计每组内edat<=13的观测数
    count_under13 = sum(edat <= 13),
    # 代入公式计算新的unitats_consum
    unitats_consum = 1 + 0.5 * (count_over13 - 1) + 0.3 * count_under13
  ) %>%
  # 可选:后续不需要分组操作时取消分组
  ungroup()

结果验证

以典型分组为例:

  • NUMERO=22:3个观测均满足edat>13,计算得1 + 0.5*(3-1) + 0.3*0 = 2,与预期一致
  • NUMERO=23:2个edat>13、1个edat<=13,计算得1 + 0.5*(2-1) + 0.3*1 = 1.8
  • NUMERO=25:3个edat>13、1个edat<=13,计算得1 + 0.5*(3-1) + 0.3*1 = 2.3

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:09:24