楼主: Soar98
1723 7

[编程问题求助] stata中剔除自身算行业加权指标 [推广有奖]

  • 3关注
  • 1粉丝

本科生

89%

还不是VIP/贵宾

-

威望
0
论坛币
191 个
通用积分
1.2692
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
782 点
帖子
35
精华
0
在线时间
180 小时
注册时间
2018-11-25
最后登录
2023-5-25

楼主
Soar98 学生认证  发表于 2021-5-31 12:42:44 |只看作者 |坛友微信交流群|倒序 |AI写论文
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问,在下列数据中,如果计算firm在剔除自身的当年数据后,所在行业当年的exch的加权平均值(按export的值计算权重)应该怎么编写程序呀?
  1. clear
  2. input firm year exch export industry
  3. 1 1 8 60 6
  4. 1 2 0.03 50 6
  5. 2 1 0.03 68 7
  6. 2 2 3 80 7
  7. 3 1 0.03 200 7
  8. 3 2 10 90 6
  9. 3 1 3 250 6
  10. 4 1 1.1 120 7
  11. 4 2 10 80 7
  12. end
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:Stata 加权指标 tata Industry export

回帖推荐

  1. bys industry year:egen exch_sum=sum( exch )
  2. gen exch_sum1=exch_sum- exch
  3. bys industry year:egen acc=sum( 1 )
  4. gen acc2=acc-1
  5. gen exch_mean= exch_sum1/ acc2
复制代码
exch_mean就是你要的。

使用道具

藤椅
Soar98 学生认证  发表于 2021-6-4 08:58:06 |只看作者 |坛友微信交流群
石器时代的大菠萝 发表于 2021-6-2 10:33
exch_mean就是你要的。
谢谢您的回答。但是您的提供的这部分程序应该是只计算了算术平均,没有计算按照export的加权平均值。

使用道具

Soar98 发表于 2021-6-4 08:58
谢谢您的回答。但是您的提供的这部分程序应该是只计算了算术平均,没有计算按照export的加权平均值。
漏看要求了。我仔细思考了一下,这可能stata实现不了,要是换成python会容易一些。

使用道具

报纸
Soar98 学生认证  发表于 2021-6-4 10:48:00 |只看作者 |坛友微信交流群
石器时代的大菠萝 发表于 2021-6-4 10:24
漏看要求了。我仔细思考了一下,这可能stata实现不了,要是换成python会容易一些。
那请问python可以通过什么方式实现呢?

使用道具

Soar98 发表于 2021-6-4 10:48
那请问python可以通过什么方式实现呢?
  1. import pandas as pd
复制代码
  1. df=pd.read_excel('export.xlsx')
  2. df
复制代码
  1. data_list=[]
  2. for ind_ in df['industry'].unique(): # 按年度、行业处理
  3.     for year_ in df['year'].unique():
  4.         df2=df[(df['industry']==ind_)&(df['year']==year_)].set_index('firm')
  5.         for i in df2.index:
  6.             df3=df2.loc[df2.index!=i].copy() #剔除个体本身
  7.             print(df3)
  8.             print('“%s”公司的取值是:%s'%(i,sum(df3['exch']*(df3['export']/df3['export'].sum()))) )
  9.             #对df2建立新列“exch_weighted average”,并进行填写。
  10.             df2.loc[i,'exch_weighted average']=sum(df3['exch']*(df3['export']/df3['export'].sum()))   #exch与用export计算权重加权相乘,最后再求和。
  11.         # 把填写好的df2增加到data_list。
  12.         data_list.append(df2)
复制代码
  1. df4=pd.concat(data_list) #使用pd.concat方法把每个data_list按照垂直方向拼接
  2. df4
复制代码

1111.png (12.43 KB)

1111.png

code.zip

10.47 KB

本附件包括:

  • export.xlsx
  • export.ipynb

已有 4 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
happy_287422301 + 40 鼓励积极发帖讨论
八七七 + 1 + 1 + 1 + 1 精彩帖子
Sunknownay + 3 + 3 + 3 热心帮助其他会员
Soar98 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 41  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

7
Soar98 学生认证  发表于 2021-6-4 14:47:55 |只看作者 |坛友微信交流群
石器时代的大菠萝 发表于 2021-6-4 13:14
哇,太棒了!谢谢!

使用道具

8
八七七 发表于 2023-2-24 15:07:07 |只看作者 |坛友微信交流群
石器时代的大菠萝 发表于 2021-6-4 13:14
老师您好,我根据自己的需求改了程序,但是因为我的计算过程更为复杂,所以使用python计算的时候经常会卡住(我的数据有3万多条,如果拆分成几百一个文件能够跑出来,但是效率很低),想请问您有没有优化程序的方法,我的程序如下import pandas as pd
df=pd.read_excel('D:\\研究生\\小论文\\export.xlsx')
df
data_list=[]
for hs_ in df['hs6'].unique():
    for year_ in df['year'].unique():
        for city_ in df['city'].unique():
            for country_ in df['CountryName'].unique():
                df2=df[(df['hs6']==hs_)&(df['year']==year_)&(df['city']==city_)&(df['CountryName']==country_)].set_index('id_new')
                for i in df2.index:
                    df3=df2.loc[df2.index!=i].copy()
                    print(df3)
                    print('"%s"公司的取值是:%s'%(i,sum(df3['qua']*(df3['export']/df3['export'].sum()))) )
                    df2.loc[i,'qua_weighted average']=sum(df3['qua']*(df3['export']/df3['export'].sum()))
                data_list.append(df2)
df4=pd.concat(data_list)
df4
df4.to_excel('D:\\研究生\\小论文\\qua_weighted_average.xlsx')


已有 1 人评分论坛币 收起 理由
happy_287422301 + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

使用道具

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

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

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

GMT+8, 2024-5-18 03:03