【发布时间】:2020-12-03 01:19:54
【问题描述】:
我喜欢在J 中复制reshape 函数。
例如,Stata 可以reshape 一个数据集“从宽到长”。下面是他们documentation的示例1:
. use http://www.stata-press.com/data/r11/reshape1.dta
. list
+-------------------------------------------------------+
| id sex inc80 inc81 inc82 ue80 ue81 ue82 |
|-------------------------------------------------------|
| 1 0 5000 5500 6000 0 1 0 |
| 2 1 2000 2200 3300 1 0 0 |
| 3 0 3000 2000 1000 0 0 1 |
+-------------------------------------------------------+
. reshape long inc ue, i(id) j(year)
. list
+-----------------------------+
| id year sex inc ue |
|-----------------------------|
| 1 80 0 5000 0 |
| 1 81 0 5500 1 |
| 1 82 0 6000 0 |
| 2 80 1 2000 1 |
| 2 81 1 2200 0 |
| 2 82 1 3300 0 |
| 3 80 0 3000 0 |
| 3 81 0 2000 0 |
| 3 82 0 1000 1 |
+-----------------------------+
注意。 Python Pandas 也有类似的功能(“stack”)。
我了解J可以导入数据文件(csv格式)如下。
load 'web/gethttp'
] dataset =: gethttp 'https://bbbyc.github.io/reshape1.csv'
load 'tables/csv'
] dataInJArray =: fixcsv dataset
得到这个dataInJArray后我迷路了。我该如何重塑它?感谢任何提示/建议!
【问题讨论】:
-
我想你可能想在通过包管理器上传它之后查看 addons/data/jd 中的 jd。您是否看过这个练习,或者这是您希望作为学习机会独立完成的练习?
-
谢谢,鲍勃。你能指出我的jd函数吗?我查看了jd tutorials,我看到了一些类似 SQL 的函数(例如,过滤器、排序、插入、删除、管理工具、从 CSV 读取),但我没有看到用于重塑的函数。最初,我希望使用 J 基础库(transpose,以及一些“groupby”)来复制上述 Stata 的 reshape 示例,但我找不到可行的方法。
-
如果您看过教程,那么我认为您已经看过很多文档。有这个链接code.jsoftware.com/wiki/Jd/Overview,您可以随时打开实际脚本 /addons/data/jd/jd.ijs 来查看定义。
标签: j