user2703679 Asked: 2024-08-22 18:56:08 +0800 CST2024-08-22 18:56:08 +0800 CST 2024-08-22 18:56:08 +0800 CST 将 SAS 数据集导出为 CSV,在下一行引入空行,这会导致记录丢失 772 导出包含 530 列和 68531 条记录的数据集,但由于一列,整个数据集增加到 123481 条记录 SAS 数据集,其中一列有多个带有空格和下一行的句子,在将其导出为 proc 导出到 CSV 时,会在下一行引入空白行,还会将下一个句子推到下一行,依此类推,尝试过 ODS,但内存不足 enter code here sas 3 个回答 Voted Best Answer data _null_ 2024-08-22T22:30:30+08:002024-08-22T22:30:30+08:00 这也许能帮助你解决问题。 data shoes; set sashelp.shoes; array C _CHARACTER_; do over c; c = compress(c,'0A0D'x,'C'); end; run; Stu Sztukowski 2024-08-22T22:44:33+08:002024-08-22T22:44:33+08:00 您的数据中嵌入了回车符。您可以用 / 之类的符号替换它们,这样人们就知道这是新段落的一部分。 data fixed; set have; col2 = tranwrd(col2, '0D0A'x, '/'); run; Tom 2024-08-22T23:17:45+08:002024-08-22T23:17:45+08:00 问题是您的一个字符变量的值(或数字变量的格式化值)包含行尾标记。 请注意,如果您告诉 SAS 使用 CRLF 组合作为行尾标记,然后在变量值中仅使用 CR(或 LF)作为分割字符,那么生成的 SAS 文件将可读。 某些软件(如 EXCEL)可以读取单元格值中嵌入行尾标记的 CSV 文件(如果值被引用)。但带有 DSD 选项的 PUT 语句(PROC EXPORT 使用的语句)不知道引用其中有行尾标记的值。 如果您想按原样导出文件,可以尝试使用此宏:https://github.com/sasutils/macros/blob/master/safe_ds2csv.sas 但请注意,在写入之前检查每个值会对性能产生影响。如果您的字符串值超过 300 个字节,您可能需要修改 MAXCHAR 参数的默认值,这将使其运行得更慢。
这也许能帮助你解决问题。
您的数据中嵌入了回车符。您可以用 / 之类的符号替换它们,这样人们就知道这是新段落的一部分。
问题是您的一个字符变量的值(或数字变量的格式化值)包含行尾标记。
请注意,如果您告诉 SAS 使用 CRLF 组合作为行尾标记,然后在变量值中仅使用 CR(或 LF)作为分割字符,那么生成的 SAS 文件将可读。
某些软件(如 EXCEL)可以读取单元格值中嵌入行尾标记的 CSV 文件(如果值被引用)。但带有 DSD 选项的 PUT 语句(PROC EXPORT 使用的语句)不知道引用其中有行尾标记的值。
如果您想按原样导出文件,可以尝试使用此宏:https://github.com/sasutils/macros/blob/master/safe_ds2csv.sas
但请注意,在写入之前检查每个值会对性能产生影响。如果您的字符串值超过 300 个字节,您可能需要修改 MAXCHAR 参数的默认值,这将使其运行得更慢。