【问题标题】:How to stop truncation of strings at 255如何在 255 处停止截断字符串
【发布时间】:2015-07-02 11:21:12
【问题描述】:

我在将长字符串变量从 SAS 导出到 SPSS 时遇到问题。

DATA testString;
INPUT testString $ 300.;
testLength=LENGTH(testString);
DATALINES;
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
;
RUN;

PROC EXPORT
DATA=WORK.teststring
FILE="H:/TestSPSStrucation.sav"
DBMS=SAV
REPLACE;

当我打开导出的 SPSS 文件时,字符串被截断为 255 个字符。我尝试了不同的方法,例如将 dbms 更改为 SPSS 或混合格式。没有太多的结果。

生成的 SPSS 文件,testString 变量是字符串类型,宽度为 765。向变量添加字符以获得比 255 个字符更宽的字符串没有问题。

【问题讨论】:

  • 看起来某些版本的 SPSS 有 255 个字符的限制。会先检查你的SPSS。写入 SPSS 时,导出引擎可能不支持更长的字符串。
  • SPSS 对于长度超过 255 个字符的字符串没有问题。我可以编辑生成的文件并添加一些字符以达到 255 个字符以上而不会出现问题。

标签: sas spss


【解决方案1】:

从 SAS 9.4 开始,根据 documentation,SAS 在导出到 SPSS 时支持最多 256 个字节(字符)的字符变量。我的猜测是,这是 SAS 开发 SPSS 导出引擎时使用的旧 SPSS 版本的限制。

SPSS 能够直接从 SAS 数据集(.sas7bdat)导入,这可能是解决此问题的更好方法。

【讨论】:

  • 这可能是答案,但确实限制了我想要的功能。那就是将带有变量和值标签的数据集直接导出到 SPSS 文件中,并将其交给相关研究人员。
  • 然后我会在communities.sas.com 上发布建议。另一种选择是从 SAS 写出一个文本文件和一个 SPSS 导入脚本;这是进行这些交换的常用方法。我简要地查看了 R 是否可以帮助您,但看起来 write.foreign(package=SPSS) 与 SAS 的导出一样糟糕或更差。
【解决方案2】:

我认为您可以通过扩展字符变量填充 (CVP) 引擎来解决此问题。尝试使用您需要的选项 CVPBYTES = #bytes 的 libname 语句?

【讨论】:

  • 你能给一个程序如何在我的示例案例中应用它吗?
  • 不是程序 我认为您需要在导入 libname 之前更改您的 libname 语句 expand 'SAS data-library' cvpmultiplier=2.5;或任何字节数。我没有使用过 SPSS 数据,但我记得我的一个朋友导入了一个数据集,他必须增加 cvpBYTES 但我查找的文档让我认为 CVPmultiplier 可能是你需要的
  • 我不确定我是否理解这对这里有什么帮助。当您遇到 unicode 或 DBCS 编码问题时,需要字符变量填充,但我认为 SPSS 处理该问题的方式与 SAS 没有任何不同。
【解决方案3】:

SPSS 支持长达 32K 的字符串变量已经有一段时间了。您可以尝试使用 SPSS 过程来读取 SAS 文件目录。文件 > 打开,或者在语法上,GET TRANSLATE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2021-03-19
    • 1970-01-01
    • 2010-11-25
    • 2017-09-05
    相关资源
    最近更新 更多