楼主: fangyuna
621 11

[面板数据求助] 如何对相同household id的不同个体的某一变量,形成一个新household组合的类别变量? [推广有奖]

  • 0关注
  • 1粉丝

等待验证会员

大专生

0%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
17.5162
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
171 点
帖子
8
精华
0
在线时间
86 小时
注册时间
2019-12-18
最后登录
2024-3-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

如何对相同Household ID下的不同个人ID的 AB, XY的某个变量,形成一个新的household 的类别新变量?

如由上图变成下图:household type: ab,cb

+--------------+--------------+------------+
| Household_id | ID          | Insurance|
+----------------+------------+------------+
| 1                  | A            | a            |
| 1                  | B            | b            |
| 2                  | X            | c            |
| 2                  | Y            | b            |
+----------------+------------+------------+


+--------------+--------------+------------+
| Household_id | ID          | 某变量    | Household Type
+----------------+------------+------------+
| 1                  | A            | a            | ab
| 1                  | B            | b            | ab
| 2                  | X            | c            | cb
| 2                  | Y            | b            | cb
+----------------+------------+------------+
二维码

扫码加我 拉你入群

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

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

关键词:household House hold use OLD

沙发
com&go 发表于 2023-10-30 09:51:28 来自手机 |只看作者 |坛友微信交流群
看例子某变量是文本型,可以根据household排序,然后求某产量的总值并生成新的变量,随后替换

使用道具

藤椅
sun_man 在职认证  发表于 2023-10-30 14:42:23 |只看作者 |坛友微信交流群
可以使用Python中的pandas库来实现。按Household_id进行分组,使用apply函数来创建一个新的Household Type变量,该变量将根据AB和XY的Insurance值进行分类。
```python
import pandas as pd
# 创建数据框
data = {'Household_id': [1, 1, 2, 2],
        'ID': ['A', 'B', 'X', 'Y'],
        'Insurance': ['a', 'b', 'c', 'b']}
df = pd.DataFrame(data)
# 定义函数来创建Household Type变量
def create_household_type(group):
    if 'a' in group['Insurance'].values and 'b' in group['Insurance'].values:
        return 'ab'
    elif 'c' in group['Insurance'].values and 'b' in group['Insurance'].values:
        return 'cb'
    else:
        return 'unknown'
# 按Household_id分组,并应用函数创建新的Household Type变量
df['Household Type'] = df.groupby('Household_id').apply(create_household_type).reset_index(level=0, drop=True)
# 打印结果
print(df)
```
运行代码,得到如下输出:
```
   Household_id ID Insurance Household Type
0             1  A         a             ab
1             1  B         b             ab
2             2  X         c             cb
3             2  Y         b             cb
```
这样,就成功创建了一个新的Household Type变量,根据AB和XY的Insurance值对Household_id进行分类。

使用道具

板凳
fangyuna 发表于 2023-10-30 19:52:45 |只看作者 |坛友微信交流群
   用了很笨的办法弄出来了,不一定最好,但是也有用。
      
        sort householdid insurance        //按照householdID内的rins值大小进行排列
        gen sins=.                                //生成配偶ns类型变量
        bysort householdid (insurance): replace sins = insurance[_n == 2]        //按照householdID内的insurance值大小进行排列,将insurance替换的值替换排列后n=2的值,替换配偶sins的较小值
        egen sins_byhouse = max(insurance), by(householdID)        //生成新的变量等于按照householdID排列下的insurance的最大值,
        replace s4ins=s4ins_byhouse if sins==.        //将配偶缺失值替换,等于相对大的ins值即为1号配偶的ins value
        bys householdID: gen num=_N        //生成家庭重复值进行验证,1为无配偶家庭,2为有配偶家庭
        replace sins=. if num==1        //将sins替换missing 如果家庭人数=1
        egen household type=group(r4ins s4ins), label        //将每个insurace和sins进行group产生家庭保险组合的变量

使用道具

报纸
fangyuna 发表于 2023-10-30 19:53:38 |只看作者 |坛友微信交流群
sun_man 发表于 2023-10-30 14:42
可以使用Python中的pandas库来实现。按Household_id进行分组,使用apply函数来创建一个新的Household Type ...
多谢,但是我不大会用python。。

使用道具

地板
fangyuna 发表于 2023-10-30 19:54:01 |只看作者 |坛友微信交流群
com&go 发表于 2023-10-30 09:51
看例子某变量是文本型,可以根据household排序,然后求某产量的总值并生成新的变量,随后替换
我好像用的跟你的方法类似~多谢

使用道具

7
蓝色 发表于 2023-10-30 21:29:38 |只看作者 |坛友微信交流群
让巧妇有米可炊 (提問時,如何附上適當的資料)
https://bbs.pinggu.org/forum.php ... 204&from^^uid=902

学习提供典型样本数据,才用判断写什么命令

使用道具

8
fangyuna 发表于 2023-10-30 21:55:10 |只看作者 |坛友微信交流群
  1. * Example generated by -dataex-. For more info, type help dataex
  2. clear
  3. input str10 householdID str12 ID byte ins
  4. "0101041010" "010104101001" 4
  5. "0101041010" "010104101002" 4
  6. "0101041020" "010104102001" 4
  7. "0101041020" "010104102002" 4
  8. "0101041030" "010104103001" 4
  9. "0101041030" "010104103002" 4
  10. "0101041040" "010104104001" 4
  11. "0101041040" "010104104002" 4
  12. "0101041050" "010104105001" 4
  13. "0101041050" "010104105002" 4
  14. end
复制代码

使用道具

9
fangyuna 发表于 2023-10-30 21:57:30 |只看作者 |坛友微信交流群
蓝色 发表于 2023-10-30 21:29
让巧妇有米可炊 (提問時,如何附上適當的資料)
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=50 ...
好的,多谢多谢。学废了。

使用道具

10
fangyuna 发表于 2023-10-30 22:03:54 |只看作者 |坛友微信交流群
* Example generated by -dataex-. For more info, type help dataex
clear
input str10 householdID str12 ID byte ins
"0101041010" "010104101001" 4
"0101041010" "010104101002" 4
"0101041020" "010104102001" 4
"0101041020" "010104102002" 4
"0101041030" "010104103001" 4
"0101041030" "010104103002" 4
"0101041040" "010104104001" 4
"0101041040" "010104104002" 4
"0101041050" "010104105001" 4
"0101041050" "010104105002" 4
end

这个ins前10行都是4,还有1 2 3 等,如何让householdid 生成一个新变量的值是由两个ID的ins变量组合而成的?如44,12, 23等

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 13:52