将另一种语言的 CSV 导入 SAS

import CSV in another language to SAS

我正在尝试将法语的 CSV 文件导入到我的美国分析中。我注意到导入中的几个问题与重音的使用有关。我把csv文件放到一个text里reader,发现数据是这样的

我不确定如何删除 [子] 部分并正确格式化。

我使用的是 SAS 9.3,无法编辑 CSV,因为它是与法国研究人员共享的 CSV。由于管理员权限,我也只能在 SAS 中使用其他语言进行操作。

我尝试了以下修复方法:

data want(encoding=asciiany);
set have;
comment= Compress(comment,'0D0A'x);
comment= TRANWRD(comment,'0D0A'x,'');
comment= TRANWRD(comment,'0D'x,'');
comment= TRANWRD(comment,"\u001a",''); 

如何解决这些问题?

虽然这在几十年前会是一个主要问题,但如今,确定编码然后 运行 您的 SAS 处于正确的模式非常简单。

首先,在文本编辑器中打开 CSV,不是基本的记事本,而是几乎任何其他编辑器; Notepad++ 是免费的,例如,或 Ultraedit 或 Textpad,在 Windows 或 Mac 上,BBEdit 或其他几个都可以。我将假设 Notepad++ 用于此答案的其余部分,但它们都有某种方式可以做到这一点。如果您处于受限的 no-admin-rights 环境中,那么好消息是:Notepad++ 可以安装在您的用户文件夹中而无需管理员权限(甚至可以安装在 USB 上!)。 (此外,高级文本编辑器是重要的数据科学工具,因此您无论如何都应该拥有一个。)

在Notepad++中,打开文件后,右下角会出现编码:“UTF-8”、“WLATIN1”、“ASCII”等,具体取决于文件的编码。看看那是什么,写下来。

获得该编码后,您可以尝试以该编码启动 SAS。对于其余部分,我假设它是 UTF-8,因为这是相当标准的,但是用您确定的任何编码替换 UTF-8。早些时候。

有关详细信息,请参阅 this article;这些说明是针对 9.4 的,但它们多年来一直是相同的。如果这不起作用,您需要与您的 SAS 管理员联系,他们可能需要修改您的 SAS 安装。

您可以:

  • 制作一个新的快捷方式(您 运行 SAS 使用的快捷方式的副本)并将 -encoding UTF-8 添加到命令行
  • 创建一个新的配置文件,将 SAS 指向它,并在配置文件中包含 ENCODING=UTF-8

请注意,这会产生一些其他影响 - 您创建的数据集将以 UTF-8 编码,虽然 SAS 能够处理它,但它会在日志中添加一些额外的注释,如果您需要一些额外的时间稍后在非 UTF8 SAS 中使用它,或者如果您在此模式下使用非 UTF8 SAS 数据集。

这有效:

data want;
  array f[8]  _temporary_ ('ä'  'ö'  'ü'  'ß'  'Ä'  'Ö'  'Ü'  'É');
  array t[8]  _temporary_ ('ae' 'oe' 'ue' 'ss' 'Ae' 'Oe' 'Ue' 'E');
  set have;
  newvar=oldvar;

newvar = Compress(newvar,'0D0A'x);
newvar = TRANWRD(newvar,'0D0A'x,'');
newvar = TRANWRD(newvar,'0D'x,'');
newvar = TRANWRD(newvar,"\u001a",'');
newvar = compress(newvar, , 'kw');
  do _n_=1 to dim(f);
    d=tranwrd(d, trim(f[_n_]), trim(t[_n_]));
  end;
run;