【问题标题】:How to output sas format as proc format syntax?如何将 sas 格式输出为 proc 格式语法?
【发布时间】:2013-12-16 12:02:12
【问题描述】:

我创建了基于数据集的格式。现在我想将此格式存储为值列表,作为我的 sas 程序中 proc 格式语法的一部分。有没有办法做到这一点?

这样做的原因是我经常需要制作表格,将人们的国家背景分组为类似于大陆的组。到目前为止,这是通过将使用国家代码作为关键变量的数据与另一个包含大洲变量的数据集连接起来,然后在大洲变量上应用格式 $continents 来完成的。

我希望能够通过为以国家代码作为输入值的大陆制作格式来跳过此连接操作。我还希望将此格式存储在生成表的语法文件中,而不是存储在格式目录中。由于世界上有很多国家,手动编写这种格式似乎容易出错。

【问题讨论】:

  • 我有点好奇你为什么要这么做?
  • 我经常使用 excel 做这种事情... 将数据集导出到 Excel。然后只需执行以下操作:=concatenate(A1,"='",A2,"'")。然后复制粘贴。

标签: sas


【解决方案1】:

这只是一个指南,尚未在每种情况下都经过测试,例如数字、字符和信息或多标签/图片格式。

/* 创建一个虚拟格式 */ 数据 dummyfmt ; 保留 fmtname 'DUMMY' 类型 'N' ; 做 i = 1 到 10 ; 开始 = 我; 标签 = 重复(字节(圆形(ranuni(0) * (122 - 97 + 1),1) + 96),10) ; 如果 i = 10 那么 hlo = 'O' ; 输出 ; 结尾 ; 跑 ; proc 格式 cntlin=dummyfmt ;跑 ; /* 将格式转储回数据集 */ proc 格式 cntlout=dump library=work ; 选择假人; 跑 ; proc打印标题=H;跑 ; /* 写出日志... */ 数据_null_; 设置转储结束=eof; 如果 _n_ = 1 则执行; 把“proc格式;” ; 如果 type = 'N' 然后输入 "value" fmtname ; 如果 type = 'C' 然后输入 "value $" fmtname ; 如果 type = 'I' 然后输入 "invalue" fmtname ; 结尾 ; 如果 hlo = 'O' 则执行; 如果输入('N' 'C') 然后输入 " other = '" label +(-1) "'" ; 如果 type = 'I' 然后放“其他 =”标签; 结尾 ; 否则做; 如果输入('N' 'C') 然后输入 " " start " = '" label +(-1) "'" ; 如果 type = 'I' 然后输入 "" start" = " label ; 结尾 ; 如果 eof 则执行; 放 ” ;” ; 把“运行;” ; 结尾 ; 跑 ;

您可能需要根据您的格式修改上述内容,尤其是在涉及范围的情况下。然后 SEXCL 和 EEXCL 列将是相关的。

/* 示例输出(来自日志窗口)*/ 过程格式; 价值 DUMMY 1 = 'bbbbbbbbbbb' 2 = 'hhhhhhhhhhh' 3 = 'ttttttttt' 4 = 'ffffffffff' 5 = 'ssssssssss' 6 = 'bbbbbbbbbbb' 7 = '啊啊啊啊啊' 8 = 'pppppppppp' 9 = 'eeeeeeeeeee' 其他 = 'wwwwwwwwww' ; 跑 ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多