【问题标题】:Importing an exported Mac-generated R dataset into SAS on Windows XP?在 Windows XP 上将导出的 Mac 生成的 R 数据集导入 SAS?
【发布时间】:2012-07-15 16:32:32
【问题描述】:

我有一个由 R 在 Mac 上生成的 .csv 文件。我想在 Windows XP 中将数据集导入 SAS。请注意,我的 .csv 文件(NA)中有许多缺失值。没有它们,我如何将数据集导入 SAS?我希望 SAS 自动将所有 NA 更改为“.”,但通常甚至很难将 Mac 生成的 .csv 文件导入 SAS 9.3。

我尝试了来自外部库的“write.dbf()”并生成了一个 .dbf 文件,但不幸的是,SAS DBMS 不知道 .dbf。

【问题讨论】:

  • 我根本不懂 R,但您的一位 cmets 提到了在您的 Windows 机器上使用 MAC 生成的 CSV 文件的问题。这是因为 CSV 文件只是一个纯文本文件,而纯文本文件在 UNIX、MAC 和 Windows 之间的编码方式不同。要让 SAS 读取在 MAC 上创建的文本文件,请将选项 TERMSTR=CR 添加到您的 INFILE 语句中。

标签: windows macos r sas


【解决方案1】:

在R的write.table函数中有一个参数na="NA"把这个改成na="."

您也可以只在 excel 中使用查找和替换。

【讨论】:

  • 嗨@chandler,我在包含na =“。”之前尝试了许多不同的方法,但似乎从Windows加载mac生成的.csv文件存在问题。我的 SAS 在 Windows XP 上。通常,使用 SAS 9.3。几乎总是,我无法读取我的 MAC .csv 文件。有趣的是,对于其他 SAS 版本,情况并非如此!
  • 这一定与文件的编码方式有关。我从来没有玩过这个,但有一个论点fileEncoding。这可能会解决您的问题。如果在 Windows 上运行 R 程序会发生什么?
  • Chandler,SAS 9.3 似乎有问题。我尝试了 SAS 9.1,我能够导入数据!感谢您的帮助。
【解决方案2】:

当您读取数据时,我不确定如何执行此操作,但您应该能够使用正常的 infile 语句,然后是 if/then。比如:

DATA new;
infile 'C:\myfolder\mydataset.csv' dlm=',' firstobs=2;
if newvar1='NA' then newvar1=.;

如果您提供有关您的数据集的更多详细信息,我可能会为您提供更多帮助。

我还想知道在将其导出以发送到 SAS 之前,您是否可以通过在 R 中将 NA 替换为 ' ' 或 numeric(0) 来获得相同的效果? IMO R 更灵活,所以我更喜欢在那里进行数据操作。

【讨论】:

  • 嗨,丽兹,感谢您的评论。正如我在上面为钱德勒写的那样,从 Windows 加载 mac 生成的 .csv 文件似乎存在问题。我的 SAS 在 Windows XP 上。通常,使用 SAS 9.3。几乎总是,我无法读取我的 MAC .csv 文件。有趣的是,对于其他 SAS 版本,情况并非如此!
  • 嗨 Sepehr,很抱歉听到您仍有问题。不幸的是,我无法使用 Mac,因此我很难为您提供太多指导。我将对您的问题进行编辑,希望对 Mac-Windows 问题有更多经验的人可以看看!
  • 嗨 Liz,SAS 9.3 中似乎存在错误。我使用了 SAS 9.1,并且能够导入数据!再次感谢您的帮助。
【解决方案3】:

您可以使用R 编写一个 SAS XPORT 格式的文件。请参阅SASxport package 中的write.xport

【讨论】:

  • 感谢布赖恩的评论。
猜你喜欢
  • 2020-12-16
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2016-02-16
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多