sas - 保持或删除功能如何在 SAS 中工作?
问题描述
我有一个包含变量 x1、x2、...x6 的表,如果变量的值为 1,或者如果它们的值不是 1,则尝试保留这些变量,然后删除它们。
data a;unid='001'; x1=1; x2=.;x3=0; x4=10; x5=.;x6=1; run;
data aa1; set a;
if x1=1 then do; keep x1; end;
if x2=1 then do; keep x2; end;
...
if x6=1 then do; keep x6; end;
keep unid;
run;
data aa2; set a;
if x1^=1 then do; drop x1;end;
if x2^=1 then do; drop x2; end;
...
run;
我想要一张桌子:
unid x1 x6
001 1 1
但是,我得到了不同的结果,只是想知道如何解决,谢谢!
解决方案
当您提交代码时,DATA
会自动编译一个步骤然后运行。
DROP
并且KEEP
是 SAS 在编译时使用的语句。它们不在运行时执行。
换句话说,DATA
语句中命名的任何输出数据集的结构都是在编译时设置的。该结构不能在运行时更改。
有类似DROP=
的KEEP=
数据集选项可以指定在 i/o 时使用。一个技巧是使用运行时动态组件对象HASH
和方法调用。.OUTPUT(dataset: dataset-name(dataset-options))
第二个技巧是累积要保留/删除的变量名称列表,将列表存储在宏变量中,然后在后续步骤中使用(或应用)&list。
第三个技巧是转置/过滤/反转置。
推荐阅读
- javascript - 检查 JS 中的日期是否为 3 年前或更长时间
- javascript - 有没有办法让用户在 JS 中输入一些东西
- r - R dplyr:将剪切和粘贴转换为调用函数
- codeigniter - 为什么 CodeIgniter 3 的内置 Session 库会抛出异常,表明它忽略了我的应用程序的会话存储配置?
- asp.net-core - 我可以在 Asp.Net Core 中为用最新的 .Net Framework (4.8) 编写的 Web Api 编写 UI 吗?
- python - PysimpleGui 使用 use_custom_titlebar = True 时任务栏中没有图标
- javascript - 我正在安装 redux 表单库并且它一直显示这些错误?
- html - HTML CSS Loop Assistance
- r-markdown - 为 rmarkdown 网站导航栏添加自定义徽标
- c++ - Do-While getline 等于 '/n' 并进行输入验证