00-SAS-Intro and Record
SAS introduction
SAS的历史很长,很强大,但是现代化做的一般(交互界面)。
使用场景也是有限的,至少一般情况下用不上这么高级的工具。
但是在某些领域又是极其重要的,像银行和药企,他们要追求足够的稳定和严谨,那么多年不曾有重大改变且一向以稳定著称的 SAS 自然可以很好的满足这一需求。
- SAS 对学术研究的支持是比较不友好的。正版太贵,除非学校有提供,个人基本不可能使用正版,这里下载破解版,搞SID(SAS的授权证书)需要时间成本,还容易有安装问题,没错你可以选择使用SAS的教育版,不过谁用谁知道。
- 安装比较麻烦,尤其是在Linux上,我曾用两周的时间折腾在 Linux 上安装一个 SAS ,最后以失败告终,且在互联网上找不到解决的方案,AI也束手无策。
- SAS不开源,意味着你看到某些论文,里面使用一些比较新的统计分析方法,SAS不大可能有现成代码可以使用,而 Python 和 R 则大几率有现成的包可以调用,这里也会节省不少时间。
- SAS的强大一方面是性能稳定,可以处理几十上百GB的数据而不容易崩溃,但是医学数据一般容量比较小,并不是非得SAS才能跑的动。
- SAS相比其他编程语言来说是独树一帜(奇葩)的存在(
proc
和data
步独步天下),从语法上面来说并没有什么和它相接近的语言,相反 R 和 Python 则会和一般的编程语言例如 Java, C 等有一些类似的地方,对以后万一还需要学习其他语言或者学习以后新诞生的编程软件诞有一定帮助。 - SAS 的支持有限,互联网上关于 SAS 的使用信息较少,一般都在出版的书中有可复现的内容,也没有像 Python 和 R 等活跃的社区可以提供较多的互动和支持,编程遇上问题不容易找到答案。
用肯定能用,但是在使用中占多大的比重,就需要权衡一下,在 AI 时代,不一定要全部掌握,看得懂,知道怎么做,应该也可以了,当然如果要深入,那就另说。
每个人的资源和时间都是有限的,用最少的资源和时间做最多的事才是最重要的。
SAS Using Record
- 2025-05-06,这几天调试 SAS 与 VSCODE 的联合使用,发现很久没有打开的 SAS 中文页面出现了乱码,调试了一天才解决,做了很多尝试,此处做一些记录,首先是修改
encoding
,但是没有效果,然后指定相关的语言和地区,可能是和系统设置有冲突,但是不是主要问题,最后在网上找到 SAS-TW 的一些问题指南,是因为 Windows 的 Beta: 使用 Unicode UTF-8 提供全球語言支援 引发的问题,最后尝试将其关闭后重启解决中文乱码问题。1 - 2025-05-24,使用jupyter notebook来连接SAS后,在cell中运行 SAS 代码,挺好,但是编译后的文档在网页中会“变质”,quarto对 SAS 结果的渲染有些问题,GPT建议可以让 SAS 结果输出为小的html块,再在quarto中引用,以后可以试试。
::: {.callout-tip}
查看完整输出:[output.html](output.html)
:::
或用HTML 的 <iframe>
进行嵌入:
<iframe src="means_output.html" width="700" height="400"></iframe>
- 2025-06-02,使用中发现,当含有 SAS 程序和输出结果的.ipynb文件被编译后,出现了两个问题,一个是markdown内的 SAS 代码块无法正确显示高亮格式,尝试了
code-fold: true code-line-numbers: true
来高亮代码块,但是效果一般;第二个问题是输出的 .html 以及网页显示时,含有 SAS 数据的页面都会 “变质”,目前网络上没有相应的问题和解决办法,问 AI 说是因为格式不一致,所以导致的变质,这个问题暂时无解,尝试对第一个问题进行完善,使其能够正确对 SAS 代码块高亮显示。 - 2025-06-04,无论实在 SAS 环境内还是在 ipynb 中调用 SAS ,都有一个问题,即输出的图像像素质量很低,特别是部署到网页后,图像基本上都是糊的,随查找了相关的解决方案,有在程序中定义像素的,但是尝试了一下不是很好用;还有一个则是修改 SAS 的环境设置,参考这篇文章:SAS 自定义输出图片DPI + 解决“ERROR:JAVA 虚拟机异常”。分为两个部分:
一个是在输出图形的
proc
步前使用ODS LISTING
语句里的选项IMAGE_DPI
指定你所需要的DPI
即可。第二是初次尝试的时候可能会遇到
“ERROR:JAVA 虚拟机异常”
的问题,此时需要运行如下程序获得 config 配置文件的物理地址:
proc options option=config; run;
利用记事本打开这一文件,将文件中如图所示的内容修改为你需要的内存大小,从 128 修改为 1024,再重新运行程序。