SAS 中的 Access Crosstab 查询等效吗?
这是我的输入:
ID Color 1 green 1 red 1 orange 1 green 1 red 2 red 2 red 2 blue 3 green 3 red
这是我想要的输出 - 按 ID 为每种颜色列出的记录计数:
ID green red orange blue 1 2 2 1 0 2 0 2 0 1 3 1 1 0 0
我知道我可以使用 proc freq 获取信息,但我想输出一个与我上面编写的数据集完全相同的数据集。我似乎无法弄清楚如何使颜色成为此输出数据集中的列。
Here is my Input:
ID Color 1 green 1 red 1 orange 1 green 1 red 2 red 2 red 2 blue 3 green 3 red
Here is what I want in my output - a count of records by ID for each color:
ID green red orange blue 1 2 2 1 0 2 0 2 0 1 3 1 1 0 0
I know I can get the information using proc freq, but I want to output a dataset exactly like the one I have written above. I can't seem to figure out how to make the colors the columns in this output dataset.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先,生成数据。
接下来,按 id 汇总颜色计数。
把桌子弄平。
(可选)用 0 填充缺失的单元格。
first, generate the data.
next, summarize color counts by id.
make the table flat.
optionally, fill in missing cells with 0.
您可以使用
PROC FREQ
的TABLE
语句的SPARSE
选项用零填充缺失的单元格。这样,您就不需要另一个DATA
步骤。颜色的顺序也可以通过PROC FREQ
的ORDER=
选项来控制。You can fill the missing cells with zero's using the
SPARSE
option to thePROC FREQ
'sTABLE
statement. This way, you don't need anotherDATA
step. The order of the colors can also be controlled by theORDER=
option toPROC FREQ
.我从来都不喜欢 proc transpose,因为我永远记不住语法。这是一种使用 proc sql 和宏变量来完成此操作的方法。
I've never been a fan of proc transpose because I can never remember the syntax. Here's a way to do it with proc sql and a macro variable.
对于(pteranodon),我碰巧正在审查档案(6年多后),这就是为什么这么不合时宜,但有人可能会受益。
For (pteranodon), I happened to be reviewing the archives(6+ yrs later) which is why so untimely, but someone may benefit.