我想导入SAS中具有重复列名的CSV文件。

名称abc abc def def

是我文件中的列名。

当我尝试在SAS中导入文件时,它会自动将变量重命名为var1,var2等。

我想保留原始的列名。 我怎样才能做到这一点?

===============>>#1 票数:1

您可以通过几种不同的方式进行操作。 进行示例的最简单方法如下所示:

data want;
infile datalines dlm=',';
input name $ abc1-abc2 def1-def2;
datalines;
John,1,2,3,4
Jack,4,5,6,7
;;;;
run;

proc print data=want;
run;

显然1-2可以变成1-35或其他。

如果您的数据比使用交错变量更复杂,我建议您仅读入标题行,对其进行转置并从中构造一个输入语句。

data varnames; *this dataset reads the header in only - use infile with obs option for actual csv;
input varname $ @@;
order+1; *so we can get back to proper order;
datalines;
Name abc abc def def
;;;;
run;

proc sort data=varnames; *sort by varname;
by varname;
run;

data input_statement;
set varnames;
by varname;
if first.varname then counter=0;
if not (first.varname and last.varname) then do; *if this is not the only varname with same varname;
 counter+1;                          *increment counter;
 varname=cats(varname,counter);      *append counter to varname;
end;
run;

proc sort data=input_statement;   *back to correct order;
by order;
run;

proc sql;   *select the new names into a macro variable;
select varname into :namelist separated by ' ' from input_statement;
quit;

data want;  *input them;
infile datalines dlm=',';
input (&namelist) ($);  *here I just make them all CHAR.  If you have all NUM except the name var, 
                         you could leave name out of your datasets and include it separately.;
datalines;
John,1,2,3,4
Jack,4,5,6,7
;;;;
run;

===============>>#2 票数:0

文档看来,您将变量名放在第一行并使用GETNAMES=yes

proc import datafile="C:\temp\test.csv"
   out=shoes
   dbms=csv
   replace;
   getnames=yes;
run;

proc print;
run;

===============>>#3 票数:0

SAS数据集中不能有重复的列名。 您必须将它们重命名为某种名称。 如果您不喜欢proc import功能,则可以通过proc datasets手动重命名它们。

proc datasets;
    modify <dataset>;
    rename var1=name var2=abc1 var3=abc2 var4=def1 var5=def2;
quit;

  ask by user1946152 translate from so

未解决问题?本站智能推荐:

1回复

如何在SAS中导入多行CSV

我得到了这种格式的文件。 现在,我想使用SAS导入它。 如何处理多行值?
3回复

在SAS中导入空CSV文件

我正在尝试使用一个循环遍历给定文件夹中所有文件的宏导入一系列CSV文件。但是,我想从循环中排除该文件夹中的一些空CSV文件。 SAS中有什么方法可以找到CSV文件大小? 谢谢,山姆
2回复

使用SAS导入包含3070个字段的CSV文件

我使用的是AIX 5.3和SAS 9.1.3 我有一个2.7G的CSV文件。 该文件有大约110k行。 每行有3070个字段。 我使用文件名myCSVfile LRECL = 32768; 然后,我使用Proc import ... delimiter =“,”...
2回复

如何在SAS中导入多个.dbf文件

问题在于,在移至下一个文件之前,它仅读取每个文件的第一行,而不是整个文件。 变量F1也显示为丢失。 欢迎建议
1回复

在SAS中导入txt文件

我有一个带有注释的文本文件,需要在SAS中导入。 文本文件如下所示 我在SAS中的输出必须如下所示 这是我所做的。 它给了我我想要的东西,但是很长。 我认为有一种更简单的方法。 我的问题是如何以简化的方式获得相同的输出? 感谢您的时间。
2回复

在SAS中导入.txt文件

我正在尝试在SAS中导入文本文件。 数据如下: 但是,导入后,我得到了一个包含107列的数据集,只有“帐号”列显示了正确的数据。 需要帮忙。 日志输出: 注意:从文件REFFILE中读取了296条记录。最小记录长度为128。最大记录长度为150。注意:数据集WORK.I
2回复

SAS:导入带日期的CSV文件

我目前正在尝试将压缩的csv文件导入SAS,并且我有3列日期以YYYY-MM-DD格式写入。 这个csv文件中的所有数据都以唯一的行表示,因此我假设它是一个字符串并且不能识别为数字(对不起,我最近才开始编码,但我仍在学习很多基础知识)。 发生的情况是SAS假设使用8个字符,并在2010-08
3回复

在SAS中导入Excel文件,标题为数据集,第二个标题为列名

如何在SAS Progrmming中使用以下条件将数据从单个excel文件导入到多个数据集。 第一行是数据集名称,用于分类不同DS中的所有数据集(DS)。 第二行是单独数据集的列名。 第三行是插入到相应数据集和列中的原始数据。 使用proc导入
2回复

如何在SAS中使用宏循环导入CSV文件?

我正在尝试编写一个SAS宏,该宏通过多个csv文件循环到该库。 不幸的是,我在完成这项工作方面不是很成功。 这是我到目前为止的内容: 更新: 我将代码更新为 这适用于以“ humans”结尾的文件,但不适用于以“ cats and dogs”结尾的文件,因为字符串中有空
1回复

在SAS中导入CSV数据时如何设置正确的日期格式?

我正在使用SAS EG中的数据步骤导入CSV数据。 在CSV中,我有一个日期列。 日期将是'2019年2月20日格林尼治标准时间' 代码:- 在运行此代码时,我的日期为01JAN1960:05:59:23 。 我尝试了不同的格式,但是有时我只会得到日期,有时会出现错误。