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

R语言如何筛选所有家庭成员年龄均大于20的家庭数据集

错误原因

你原来的SQL写法逻辑存在问题:GROUP BY household后直接使用having Members_age > 20,仅会校验分组后默认返回的第一条记录的年龄,不会判断该家庭下所有成员的年龄,因此输出结果不符合预期。
另外注意你描述的需求是「所有家庭成员年龄均大于20」,但给出的预期结果包含有20岁成员的家庭101,可根据实际需求调整判断条件为>(严格大于)或>=(大于等于)。

正确实现方案

sqldf 实现

利用MIN()聚合函数判断家庭最小年龄是否满足要求即可:

仅返回符合条件的家庭ID

sqldf("select household from data group by household having min(Members_age) >= 20")

输出结果:

household
1       100
2       101

返回符合条件家庭的所有成员记录

sqldf("select * from data where household in (
  select household from data group by household having min(Members_age) >= 20
)")

dplyr 实现

同样按家庭分组后校验最小年龄:

仅返回符合条件的家庭ID

data %>%
  group_by(household) %>%
  filter(min(Members_age) >= 20) %>%
  distinct(household)

返回符合条件家庭的所有成员记录

data %>%
  group_by(household) %>%
  filter(min(Members_age) >= 20) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:57:04