我的客户端使用 AIX(IBM Unix)服务器上运行的 SAS 9.3 。客户端界面是 SAS Enterprise Guide 5.1 。
我遇到了这个非常令人费解的问题:当PROC IMPORT
与dbms=xlsx
结合使用时,似乎无法根据字符变量的值来过滤行(至少,当我们寻找一个完全匹配)。
使用 .xls 文件,以下导入效果非常好;预期的行子集写入myTable
:
proc import out = myTable(where=(myString EQ "ABC"))
datafile ="myfile.xls"
dbms = xls replace;
run;
但是,使用相同的数据但这一次在 .xlsx 文件中,会创建空数据集(具有正确的数量)变量和适当的列类型。)
proc import out = myTable(where=(myString EQ "ABC"))
datafile ="myfile.xlsx"
dbms = xlsx replace;
run;
此外,如果我们从where
中排除PROC IMPORT
,则数据似乎正确导入。但是,过滤仍然是不可能的。例如,这将创建空数据集:
data myFilteredTable;
set myTable;
where myString EQ "ABC";
run;
以下方法有效,但显然不能令人满意:
data myFilteredTable;
set myTable;
where myString LIKE "ABC%";
run;
另请注意:
compress
或其他字符串函数无效我想知道这是否是一个已知问题,到目前为止我找不到任何相关内容。任何帮助表示赞赏。
答案 0 :(得分:0)
听起来你的字符串最终没有被compress
选中。尝试使用countc
上的MyString
函数查看最后是否存在任何额外字符。然后,您可以确定在compress
确定后要删除哪些字符。