全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1546 1
2023-04-11
如图,怎么做有条件的除法?
现在手上有不同国家不同产品的【值】,想要用这个【值】除以世界的值,例如,国家1的000001产品的乘积除以世界的产品代码000001的总值,国家2的000001的产品的乘积除以世界的产品代码000001的总值…………
不知道该怎么做
如果笨方法也可以,自己尝试了类似这样的公式,但是报错了
gen 集约边际=乘积/1076922 if commoditycode==010210
type mismatch


求大神
附件列表
微信图片_20230411153621.png

原图尺寸 61.23 KB

微信图片_20230411153621.png

二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群