stata - 从多个变量的观察中生成新变量
问题描述
我有一个示例数据集,其中包含变量date
、spx
(市场价格)、trans_1
(股票 1 价格)和trans_2
(股票 2 价格):
* Example generated by -dataex-. To install: ssc install dataex
clear
input int(date spx) double(trans_1 trans_2)
14610 100 1 1
14611 102 1.1 .9
14612 103 1.21 .81
14613 104 1.321 .729
end
format %tdnn/dd/CCYY date
我需要重新排列数据,以便导出三个变量:trans_id
,date
以及trans_price
数据集中的每个日期都存在于每个股票 id 中,并且所有股票价格都组合在一个stock_price
变量中。
预期结果:
date spx trans trans_id
1/1/2000 100 1 1
1/2/2000 102 1.1 1
1/3/2000 103 1.21 1
1/4/2000 104 1.321 1
1/1/2000 100 1 2
1/2/2000 102 .9 2
1/3/2000 103 .81 2
1/4/2000 104 .729 2
我已经阅读了各种尝试使用xpose
、merge
或append
命令的论坛,但无法提出可能的解决方案。
解决方案
以下对我有用:
generate id = _n
reshape long trans_ , i(id) j(_j)
drop id _j
bysort date (spx): generate id = _n
sort id (date)
list, sepby(id)
+------------------------------+
| date spx trans_ id |
|------------------------------|
1. | 1/1/2000 100 1 1 |
2. | 1/2/2000 102 1.1 1 |
3. | 1/3/2000 103 1.21 1 |
4. | 1/4/2000 104 1.321 1 |
|------------------------------|
5. | 1/1/2000 100 1 2 |
6. | 1/2/2000 102 .9 2 |
7. | 1/3/2000 103 .81 2 |
8. | 1/4/2000 104 .729 2 |
+------------------------------+
推荐阅读
- ios - 如何在 Xcode 10 中设置以前的基础 SDK?
- javascript - 使用 axios 发出 Curl 请求
- java - 返回布尔值的 if 语句函数
- r - 我有社区的 shapefile 边界。如何确定一个点位于哪些边界内?
- javascript - 如何更新 Bootstrap 模式日历事件
- c++ - 将链表中的某个节点向前移动 n 个位置
- vsto - 在文本框中设置项目符号项的缩进问题
- python - 从文本文件中读取字符串并在另一个文本文件中搜索
- javascript - 启动我的 node.js 应用程序时出现错误连接 ECONNREFUSED 127.0.0.1:3306
- haskell - 镜头中自动生成 Has 类型类的文档在哪里?