我正在使用 SAS Studio。我正在导出包含 57 个观测值和 1151 个变量的 df。我使用 proc export 和 DBMS = SAV 将文件转换为 SAV 并将其移动到我的库文件夹中。我可以将该文件下载到我的计算机上并在 SPSS 中打开它,尽管只有一小部分变量名称传输到 SPSS。
我运行了这段代码:
proc export data=import outfile='/home/u63943531/Imported Data' dbms=sav; run;
并在我的图书馆中找到了“Imported Data.sav”。然后我右键单击并选择“下载文件”。尽管在 SPSS 中打开时大多数变量名称都是自动生成的,但文件下载正确。我想要 SAS df 中的变量名称。
如果它保留在我的工作文件夹中就可以了。
这是用于生成数据集的代码
%web_drop_table(WORK.IMPORT);
FILENAME REFFILE '/home/u63943531/Imported Data/CSV_Desktop_Version_2024-07-10-210526449754432448585360030.csv';
PROC IMPORT DATAFILE=REFFILE
DBMS=CSV
OUT=WORK.IMPORT;
GETNAMES=YES;
RUN;
PROC CONTENTS DATA=WORK.IMPORT;
RUN;
%web_open_table(WORK.IMPORT);
您的问题似乎与 SPSS SAV 文件的 PROC EXPORT 无关。
相反,您没有正确创建 SAS 数据集。 将文本文件读入 SAS 数据集非常简单。只需编写一个定义和读取变量的数据步骤即可。 只是
使用 INFILE 指向跳过标题行的文件,使用 DSD 选项正确处理分隔文件,使用 TRUNCOVER 选项处理最后一个变量为空的任何行。
使用 LENGTH(或者可能是带有 LENGTH= 选项的 ATTRIB)来定义每个变量的类型和存储长度。 按照它们在文件中出现的顺序定义它们,后面的 INPUT 语句会更简单。
将格式和/或信息附加到任何需要它们的变量。 大多数变量不需要它们。主要的例外是 DATE、TIME 或 DATETIME 值。
使用INPUT语句读取变量。
data want;
infile reffile dsd firstobs=2 truncover ;
length var1 8 var2 $20 ..... varlast 8 ;
informat datevar date.;
format datevar date9.;
input var1 -- varlast ;
run;
如果您必须使用猜测程序来猜测如何定义变量,请记住 PROC IMPORT 只能“看到”标题行的前 32K 字节。 因此,您可以告诉它跳过标题行,而是单独读取该标题行并使用它来重命名变量。
或者只是使用另一个猜测工具,例如这个宏:https://github.com/sasutils/macros/blob/master/csv2ds.sas