疟疾模型中基于房屋类型与蚊帐使用情况的感染人群统计求助
按房屋类型与蚊帐使用情况统计感染人群的实现方案
1. 单个维度的感染人群统计
你之前的代码缺少感染状态筛选,这是统计感染人群的核心条件,以下是修正后的实现:
按房屋类型统计感染人数
假设数据库中存储感染状态的字段为h_infected(请替换为你实际的字段名),针对特定房屋类型(比如类型A)的感染人数统计代码:
count(humans, h->h.h_type == "A" && h.h_infected == true);
将"A"替换为你需要统计的其他房屋类型值,即可得到对应分组的感染人数。
按是否使用蚊帐统计感染人数
同理,加入感染状态条件后,分别统计使用/未使用蚊帐的感染人群:
// 使用蚊帐的感染人数 count(humans, h->h.h_benetuse == true && h.h_infected == true); // 未使用蚊帐的感染人数 count(humans, h->h.h_benetuse == false && h.h_infected == true);
2. 交叉维度的组合统计(房屋类型+蚊帐使用)
如果需要同时统计两种维度的交叉结果(比如每种房屋类型下,用/不用蚊帐的感染人数),可以直接叠加条件:
// 房屋类型A中使用蚊帐的感染人数 count(humans, h->h.h_type == "A" && h.h_benetuse == true && h.h_infected == true); // 房屋类型A中未使用蚊帐的感染人数 count(humans, h->h.h_type == "A" && h.h_benetuse == false && h.h_infected == true);
如果你的建模工具支持groupBy函数,还可以一次性生成所有交叉分组的统计结果:
groupBy(humans, h->h.h_type, // 第一分组维度:房屋类型 h->groupBy(h, hh->hh.h_benetuse, // 第二分组维度:蚊帐使用情况 hhh->count(hhh, hhhh->hhhh.h_infected == true) // 统计每组感染人数 ) );
3. 数据库层面直接查询(若需从数据库提取原始数据)
如果需要直接操作数据库(用SQL),可以执行以下分组查询:
按房屋类型统计
SELECT h_type, COUNT(user_id) AS infected_count FROM your_table_name WHERE h_infected = TRUE GROUP BY h_type;
按蚊帐使用情况统计
SELECT h_benetuse, COUNT(user_id) AS infected_count FROM your_table_name WHERE h_infected = TRUE GROUP BY h_benetuse;
交叉维度统计
SELECT h_type, h_benetuse, COUNT(user_id) AS infected_count FROM your_table_name WHERE h_infected = TRUE GROUP BY h_type, h_benetuse;
请将your_table_name替换为你实际的数据库表名,字段名也需匹配你的数据库定义。
内容的提问来源于stack exchange,提问作者Celina
相关产品推荐
相关产品推荐

