楼主: zzzzjm123
1722 1

[数据管理求助] 怎么用stata做有条件的除法 [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
50 点
帖子
1
精华
0
在线时间
16 小时
注册时间
2022-10-28
最后登录
2023-9-21

楼主
zzzzjm123 发表于 2023-4-11 16:04:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如图,怎么做有条件的除法?
现在手上有不同国家不同产品的【值】,想要用这个【值】除以世界的值,例如,国家1的000001产品的乘积除以世界的产品代码000001的总值,国家2的000001的产品的乘积除以世界的产品代码000001的总值…………
不知道该怎么做
如果笨方法也可以,自己尝试了类似这样的公式,但是报错了
gen 集约边际=乘积/1076922 if commoditycode==010210
type mismatch


求大神
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata Commodity mismatch Match

微信图片_20230411153621.png (61.23 KB)

微信图片_20230411153621.png

沙发
Markqb 发表于 2023-4-12 11:00:03
您可以尝试使用Stata的egen命令中的total函数来实现有条件的除法。具体地,您可以按照以下步骤进行操作:

用sum命令计算世界的总值,比如命名为world_total:
sum value if commoditycode==000001
local world_total = r(sum)
用egen命令计算出每个国家每个产品代码的乘积,比如命名为product_total:
egen product_total = prod(value) if by(countrycode commoditycode)

用生成变量命令gen计算有条件的除法,即将每个国家每个产品代码的乘积除以世界的总值,比如命名为intensity:
gen intensity = product_total/world_total if commoditycode==000001

注意,这里的if条件需要和之前的sum命令中的条件一致,即commoditycode==000001,而不是010210。如果您想计算其他产品代码的值,只需要相应地更改这个条件即可。

另外,您在尝试用gen命令实现有条件的除法时出现了type mismatch的报错,可能是因为您的乘积变量product_total的数据类型不是数值型。您可以尝试用tostring命令将其转化为字符串型,然后再用egen命令计算出每个国家每个产品代码的字符串连接结果,最后用generate命令将其转化为数值型,并计算有条件的除法。具体操作如下:
tostring value, replace
egen product_str = concat(value) if by(countrycode commoditycode)
gen product_total = real(product_str)
gen intensity = product_total/world_total if commoditycode==000001

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 06:42