我在互联网上搜索过,但似乎找不到这个。我的问题是,如果我有一个sas7bdat文件,我如何在SAS studio中读取一个sas7bdat文件以便使用它。
我试过:
libname test 'C:UsersnameDownloadstest.sas7bdat';
这给了我一个错误,即库测试不存在,如果我尝试以下操作,我知道我需要一个INPUT,除非我能看到文件,否则我不知道这个INPUT。
DATA test;
INFILE 'C:Userslees162Downloadstest.sas7bdat';
RUN;
我有什么东西不见了吗?
LIBNAME
语句创建的Libref指向目录,而不是单个文件。
libname test 'C:UsersnameDownloads';
INFILE
用于读取原始数据文件。要引用现有SAS数据集,请使用SET
语句(或MERGE
、MODIFY
、UPDATE
语句(。
set test.test ;
请注意,您可以跳过定义libref,只在SET语句中使用带引号的物理名称。
DATA test;
set 'C:Userslees162Downloadstest.sas7bdat';
RUN;
当然,要在路径中使用C:
,这是假设您使用SAS/Studio指向在PC上运行的完整SAS。如果您使用SAS University Edition,则它在虚拟机中运行,您需要将SAS数据集放入映射到虚拟机的文件夹中,然后在SAS代码中引用该数据集,并使用虚拟机用于目录
所以类似于:
DATA test;
set '/folders/myfolders/test.sas7bdat';
RUN;
Libname只是指向位置,一旦完成,就可以在set语句中使用Libname后面的句点和数据集
libname test "C:UsersnameDownloads";
DATA test;
set test.asl;
RUN;
一个可能的原因可能是您使用的是SAS大学版(它不支持可变库地址(。
来自SAS社区的一个问答:
">使用SAS大学版时,您创建的任何库都必须分配到共享文件夹中。您使用以下路径名访问共享文件夹:/folders/myfolders/。总是在目录路径中使用"/",即使在Windows操作环境中也是如此;
设置目录地址后,按照上面Tom在其中一个答案中的指示进行操作。
假设您在位置上有sas数据集。C: \Users\name\Downloads\test.sas7bdat
libname download 'C:UsersnameDownloads';
proc sql;
select * from downloads.test;
run;
如果您想查询数据集,可以使用proc-sql像读取表一样读取数据集,但如果您想修改现有数据集,则可以使用@krian提到的数据集。