python - 排序所需的多标签时间序列
问题描述
我有一个来自 IMF 的进出口的时间序列数据集。它有第一列作为主要国家,第二列作为计数器国家,第三列作为类型(进口或出口),其余列是值,每列代表一个月。我正在尝试转置它,但 3 个解释变量(国家、计数器和类型)很难。似乎拥有多维列/变量标签会很棒,但我没有发现任何让我认为这是可能的东西。当然,我可以合并列(即国家反类型),但这使得当我需要按危机国家排序时变得很困难。任何建议,将不胜感激。这对于 SAS、Python、R 或 Stata 来说非常有用。谢谢你。
编辑:
感谢您的回复。一个例子是这样的:
国家计数器 国家类型 日期 2001-01 2001-02 2001-03
法国 美国 进口 10 11 12
法国 美国 出口 4 5 6
法国 英国 进口 1 2 3
法国 英国 出口 2 3 4
美国 FR IM 3 4 5
美国 FR EX 5 6 7
美国 英国 IM 4 5 6
美国 英国 EX 5 6 7
英国 FR IM
英国 FR EX
英国 美国 IM
英国美国前
这种情况在 100 多个国家/地区都有很多变量,因此将标签重命名为 US_UK_IM 之类的名称并不理想。我的想法是,我可以按国家、对应国家或类型进行排序,同时也将数据限制在一个国家(例如美国的金融危机,中国的 2015 年市场事件等),并将这些事件混合在一起进行测试. 理想情况下,我可以转置数据集以使其变长并嵌套标签,这样我就可以将数据限制为美国既是国家又是对应国家。
请让我知道这个解释是否有帮助。谢谢你。
解决方案
假设您的数据已导入,您可以使用 PROC TRANSPOSE 将其转置为长格式。然后使用 WHERE 语句过滤 Excel 或 SAS 中的数据。
假设您的变量如图所示这将起作用,您可能需要对其进行修改以匹配您的数据。
对数据进行排序
转置以使日期成为数据中的行和包含值的新列
过滤示例
(可选)导出到 Excel。
proc sort data=have; by country counter_country Type; run; proc transpose data=have out=long; by country counter_country type; var '2001-01'n -- '2020-12'n; *first and last variables; run; data long; set long; month_report = input(compress(_name_, '-'), yymm6.); format month_report yymmn6.; *then to filter US and counter country is either France/US and for the year 2001; data US_France_2001; set long; where country = 'US' and counter_country in ('France', 'US') and year(month_report) =2001; run;
或导出到 Excel:
proc export data=long outfile='/folders/myfolders/ImportData.xlsx' dbms=xlsx replace;run;
推荐阅读
- java - 移动客户端登录 Spring REST 服务器
- vim - 延迟或禁用 {Visual}g CTRL-G 返回的信息的自动隐藏
- python - 如何将 pandas DataFrame 转换为 json 用于 django 模型?
- search - make:使用 grep 在文件夹内的所有文件中查找特定字符串
- javascript - 在socket.io/sockets的属性赋值中确定第一个socket连接
- r - 在 R 中的 Haplotype Network Plot 上更改边缘颜色、字体颜色和刻度颜色
- c# - 构建一种数字时钟 C#
- python - ValueError:重复的级别名称:“rec_id”,分配给级别 1,已用于级别 0
- jenkins - 在 Jenkins 中运行具有依赖项的脚本
- jquery - 使用 jQuery 的无尽动画