【问题标题】:SAS ensuring consistency between csv exportSAS 确保 csv 导出之间的一致性
【发布时间】:2021-05-27 18:56:39
【问题描述】:

有一段时间我在 SAS 指南中使用手动导出(-> 导出然后选择 csv 而不是 sasbdat)来导出我的数据库。现在我正在尝试自动导出它。我稍微修改了基础 SAS example 以执行导出:

proc export data=work.data_test
     outfile="c:\myfiles\test.csv"
     dbms=csv 
     replace;
run;

但是当我尝试在 python (Columns (1,2,5,6,9,[...]) have mixed types) 中读取文件时,这会导致一些类型错误,而当我手动导出文件时,我没有收到此错误。

那些选项:

 Options NOFMTERR;
 OPTIONS LOCALE=FRENCH;

用于匹配我的其余 SAS 代码。

知道如何确保 proc 导出和 SAS 中的手动导出之间的一致性吗?

【问题讨论】:

  • 我们大多数人都不会安装 SAS 来重现您的导出,并且由于您的问题是关于使用 Python 导入文件,因此添加有效格式的小样本是明智的,以及不适合您的问题的格式。数据是否来自 SAS 与解决您的 Python 问题实际上无关。
  • python如何确定CSV文件中文本的“类型”?例如,它是否只是假设 CSV 中的字段是否有可选的引号,即使内容只是数字,它也是“字符”?或者,如果列中的某些数字是精确整数,因此 CSV 文件中没有小数点,那么类型是整数而不是实数?请举例说明两个不同 CSV 文件中文本的差异。
  • @BoarGules:我正在使用用于在 Python 中读取数据的数据类型字典“正确”处理这个问题。然而,这不仅仅是 Python 数据读取问题,我首先想知道如何避免 SAS 导出不一致。
  • @Tom:似乎 csv 文件的某些列都包含数字和数字作为字符串。手动导出不会有这个问题。
  • CSV 文件中的所有内容都是字符串,所以我不理解“数字作为字符串”的注释。请查看您是否可以仅用几列和几行来隔离问题,并发布两个版本的 CSV 文件。

标签: python database csv sas export


【解决方案1】:

导出文件有多种方法,GUI 使用的方法与 PROC EXPORT 不同。

我认为它曾经是 ODS CSV 进行导出,但我不是 100% 确定。我可能会尝试使用 ODS CSV 和数据步骤,看看是否适合您。

ods csv file='path to csv file';
ods noptitle;title;
proc print data=......;
run;

ods csv close;

不同的方法处理格式和类型的方式不同,即 PROC EXPORT 不会一次将格式导出到 Excel,而 ODS EXCEL 会将格式化的值导出到 Excel。

或者尝试手动数据步骤。与其手动编写,不如在运行 PROC EXPORT 后检查您的日志并将代码表单复制粘贴到您的程序中。然后,您可以根据需要调整变量的格式、类型和长度。

或者您可以尝试使用 saspy 直接读取 SAS 数据集,而不是使用中间数据传输。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2013-10-18
    • 2021-06-23
    相关资源
    最近更新 更多