File io SAS在输入期间重命名变量

File io SAS在输入期间重命名变量,file-io,import,sas,renaming,informat,File Io,Import,Sas,Renaming,Informat,这里是自学成才的SAS用户 我经常使用我几乎无法控制的数据集,这些数据集在几个不同的用户之间共享 我通常使用infle语句作为csv读取文件,并使用informat、format和input语句块定义变量。在这个过程中,我可以继续重命名变量吗?前提是所有变量都按照正确的顺序重命名,还是必须匹配原始数据集并在以后的数据步骤中重命名 例如,数据集中的变量名为“100%全额支付”。我知道SAS变量不能以数字开头,我也希望简化变量名,因此我可以执行以下操作: infile statement... in

这里是自学成才的SAS用户

我经常使用我几乎无法控制的数据集,这些数据集在几个不同的用户之间共享

我通常使用infle语句作为csv读取文件,并使用informat、format和input语句块定义变量。在这个过程中,我可以继续重命名变量吗?前提是所有变量都按照正确的顺序重命名,还是必须匹配原始数据集并在以后的数据步骤中重命名

例如,数据集中的变量名为“100%全额支付”。我知道SAS变量不能以数字开头,我也希望简化变量名,因此我可以执行以下操作:

infile statement...
informat Paid $3.;
format Paid $3.;
input Paid $;
run;
或者我做这件事效率很低。我曾经尝试过在没有完整的信息/格式/输入业务的情况下进行简单的proc导入,但我发现尝试在之后重新定义变量类型会让我更头疼(我使用的所有数据集都有文本、美元、百分比、通用数字、日期等的组合)。在任何情况下,我们都非常感谢其他提示——谢谢

编辑

也许我应该问的问题是:有没有办法保持美元和百分比的csv格式(通过proc导入,它似乎将这些转换为字符)?我知道,在导入文件之前,我可以在Excel中将格式从美元/百分比手动更改为“常规”,但我更愿意避免额外的手动步骤,因为我确实希望将其保留为美元和百分比。还是我最好使用informat/format/input来指定csv的数据类型,这样变量就可以按照我希望的方式读取


注意:我无法处理导入xls或xlsx文件,原因可能是我在64位计算机上和/或缺少所需的驱动程序(或两者都缺少)。即使在32位计算机上,我也无法做到这一点

CSV文件不包含任何关于变量类型的元数据,正如您关于尝试将其导入Excel的说明所示。您可以使用PROC IMPORT让SAS对如何读取它们进行有根据的猜测,但答案可能因文件而异,具体取决于碰巧出现的特定数据值

如果您有XLS或XLSX文件中的数据,您应该能够使用XLS或XLSX引擎的libname将它们直接读取到SAS中。它不使用Excel,因此在32和64安装之间没有任何冲突。事实上,您甚至不需要安装Excel。SAS在从Excel文件确定变量类型方面比从CSV文件确定变量类型方面做得更好,但由于Excel是一个自由格式的电子表格,您可能仍然无法在多个文件中为同一变量提供一致的变量类型。使用Excel电子表格,您甚至可能无法在单个工作表的单个列中保持相同的数据类型

最好编写自己的数据步骤来读取文件。这样你就可以加强一致性

当给定一个CSV文件时,我通常会从第一行复制名称,并使用它创建一个
LENGTH
语句。这将定义变量并设置变量的顺序。此时,您可以为变量指定新名称

length paid $3 date amount 8 ;
然后,对于需要正确读取INFORMAT的变量,我添加了
INFORMAT
语句。通常,这仅适用于日期/时间变量,但如果数值包含逗号或百分号,则也可能需要。如果CSV文件中的数字格式为$和/或数千分隔符,则
美元。
信息非常有用

informat date mmddyy. amount dollar. ;
然后,对于需要正确显示格式的变量,我添加了
FORMAT
语句。通常,这仅适用于日期/时间变量。如果要附加$CHAR,则仅字符变量需要此参数。格式化以保留前导空格

format date yymmdd10. ;
然后,
INPUT
语句非常简单,因为您可以使用位置变量列表。注意,输入语句中不需要包含informats或$,因为类型已经由LENGTH语句定义

input paid -- amount ;

CSV文件不包含关于变量类型的任何元数据,正如您关于尝试将其导入Excel的说明所示。您可以使用PROC IMPORT让SAS对如何读取它们进行有根据的猜测,但答案可能因文件而异,具体取决于碰巧出现的特定数据值

如果您有XLS或XLSX文件中的数据,您应该能够使用XLS或XLSX引擎的libname将它们直接读取到SAS中。它不使用Excel,因此在32和64安装之间没有任何冲突。事实上,您甚至不需要安装Excel。SAS在从Excel文件确定变量类型方面比从CSV文件确定变量类型方面做得更好,但由于Excel是一个自由格式的电子表格,您可能仍然无法在多个文件中为同一变量提供一致的变量类型。使用Excel电子表格,您甚至可能无法在单个工作表的单个列中保持相同的数据类型

最好编写自己的数据步骤来读取文件。这样你就可以加强一致性

当给定一个CSV文件时,我通常会从第一行复制名称,并使用它创建一个
LENGTH
语句。这将定义变量并设置变量的顺序。此时,您可以为变量指定新名称

length paid $3 date amount 8 ;
然后,对于需要正确读取INFORMAT的变量,我添加了
INFORMAT
语句。通常,这仅适用于日期/时间变量,但如果数值包含逗号或百分号,则也可能需要。如果CSV文件中的数字格式为$和/或数千分隔符,则
美元。
信息非常有用

informat date mmddyy. amount dollar. ;
然后,对于需要正确显示格式的变量,我添加了