Stata长表转宽表:reshape命令处理投资类数据报错解决方案
Stata长格式转宽格式报错的解决方法
报错原因
你写的代码存在两个核心问题:
reshape语句的i()参数只指定了year作为行唯一标识,而你实际的行标识是「年份+国家」双字段,单个年份下对应多个国家,自然会出现newid不唯一的报错- 不需要手动生成
newid变量,且你要展开为列的是投资类型对应的Value字段,不是Investment本身,Investment是用来指定列名的类别变量
正确实现代码
第一步:预处理(可选,解决字段大小写和重复观测问题)
* 统一字段名大小写,避免匹配错误 rename Year year rename Country country * 如果同一「年份+国家+投资类型」存在多条重复观测,先聚合(示例为求和,可按需替换为mean等统计量) collapse (sum) Value, by(year country Investment)
第二步:执行长转宽
* i指定行唯一标识为年份+国家,j指定类别字段为Investment,加string声明类别为字符串类型 reshape wide Value, i(year country) j(Investment) string * 可选操作:去掉列名前的Value前缀,直接用投资类型作为列名 rename Value* *
运行结果说明
运行后每行对应唯一的年份+国家组合,每个投资类型会生成独立的列,和你的需求完全匹配。
内容的提问来源于stack exchange,提问作者Loni
相关产品推荐
相关产品推荐

