楼主: 南冥南
3460 4

[数据管理求助] 如何实现分组按条件求均值。 [推广有奖]

  • 0关注
  • 0粉丝

高中生

20%

还不是VIP/贵宾

-

威望
0
论坛币
899 个
通用积分
0.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
45 点
帖子
6
精华
0
在线时间
59 小时
注册时间
2021-4-10
最后登录
2025-4-21

楼主
南冥南 发表于 2021-4-10 15:17:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大哥求助!变量如下:id, age, income。求每个family id三十岁以上的人的平均收入,并写在每个家庭成员后面。大概是下面这样子
family_id        age   income
1                   20    3000
1                   40    5000
1                   45    6000
2                   45     5000
达到的效果是如下
family_id        age   income   ave_income
1                   20    3000        5500
1                   40    5000         5500
1                   45    6000       5500
2                   42     5000      5000

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何实现 Income Family Come 平均收入

沙发
DΘstinyじò 发表于 2021-4-10 15:48:03
  1. bys family_id: egen  ave_income=mean(income)   if age>=30
  2. bys family_id (ave_income): replace ave_income=ave_income[1]
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
南冥南 发表于 2021-4-16 17:41:22
DΘstinyじò 发表于 2021-4-10 15:48
非常感谢!非常有用。能不能追问一下ave_income[1]是啥意思呢

板凳
DΘstinyじò 发表于 2021-4-16 21:29:42
南冥南 发表于 2021-4-16 17:41
非常感谢!非常有用。能不能追问一下ave_income[1]是啥意思呢
  1. bys family_id (ave_income): replace ave_income=ave_income[1]
复制代码
以family_id 为分组,组内按照ave_income排序,ave_income[1]表示组内改变量的第一个值。

报纸
赵安豆 发表于 2025-2-7 11:24:39
在实现这个问题时,我们可以使用SQL或者Python中的Pandas库。这里我会提供两种方法的解决方案。

### 方法1: 使用 SQL

假设你的表名为 `people`。

首先我们需要计算每个家庭中30岁以上成员的平均收入:

```sql
WITH over_30_income AS (
  SELECT family_id, AVG(income) as ave_income
  FROM people
  WHERE age >= 30
  GROUP BY family_id
)

SELECT p.family_id, p.age, p.income,
       o.ave_income
FROM people p
LEFT JOIN over_30_income o ON p.family_id = o.family_id;
```

在这个SQL查询中,我们首先创建了一个名为 `over_30_income` 的临时表,用于存储每个家庭的平均收入。然后我们将这个临时表与原始数据进行左连接,将计算出的平均收入添加到每条记录后面。

### 方法2: 使用 Python Pandas

```python
import pandas as pd

# 假设这是你的初始DataFrame
df = pd.DataFrame({
    'family_id': [1, 1, 1, 2],
    'age': [20, 40, 45, 42],
    'income': [3000, 5000, 6000, 5000]
})

# 计算每个家庭中年龄大于等于30的成员的平均收入
ave_income = df[df['age'] >= 30].groupby('family_id')['income'].mean().reset_index()
ave_income.columns = ['family_id', 'ave_income']

# 将计算出的平均收入加入到原始DataFrame中
df = pd.merge(df, ave_income, on='family_id', how='left')

print(df)
```

在这个Python示例中,我们首先使用条件筛选出年龄大于等于30的数据,并对这些数据按家庭ID分组求平均收入。然后将计算的结果与原始数据进行合并。

希望这两种方法能够帮助你解决问题!

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-9 00:02