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

使用group_by()%>%summarise()分组统计时的动物总数显示问题

解决方法

问题出在animal_total的计算逻辑上——你直接对所有家庭的动物总数求和,没有区分当前分组的饲养状态。只需在求和前筛选出与当前分组匹配的家庭数据即可:

library(tidyverse)

# 创建个人层面数据
person_level <- tibble::tribble(
                 ~household_id, ~person_id, ~age, ~diarrhea, ~animal, ~animal_total,
                 1,          1,    2,         1,       1,             5,
                 1,          2,    3,         0,       1,             5,
                 1,          3,   65,        NA,       1,             5,
                 1,          4,   66,        NA,       1,             5,
                 2,          1,    2,         1,       0,             0,
                 2,          2,    4,         0,       0,             0,
                 2,          3,    8,        NA,       0,             0,
                 2,          4,   55,        NA,       0,             0
               )

# 转换为家庭层面数据(去重)
household_level <- person_level %>% 
                    distinct(household_id, .keep_all = TRUE) 

# 生成修正后的汇总表
person_level %>% 
  group_by(animal) %>% 
  summarise(
    n = n(),
    # 关键修改:筛选当前分组对应的家庭再求和
    animal_total = household_level %>% filter(animal == .data$animal) %>% pull(animal_total) %>% sum(),
    n_under5 = sum(age <= 5, na.rm = TRUE),
    num_diarrhea = sum(diarrhea, na.rm = TRUE),
    percent_diarrhea = round((num_diarrhea / n_under5), 4)*100
  ) %>% 
  arrange(desc(animal))

效果说明

  • 养宠组(animal=1):animal_total显示对应家庭的动物总数5
  • 无宠组(animal=0):animal_total显示0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:01:10