根据条件从SAS数据集中删除变量(如果这样做)

1 sas sas-macro

所以我做了一些在线搜索,但没有找到任何可以解决这个问题的东西.从本质上讲,我已经获得了一个数据集,然后我根据名称将其拆分为单个数据集.

但是,如果此人是女性,则需要从数据集中省略年龄.示例输出:

男性

姓名年龄体重身高

女性

名称重量高度

我尝试过以下IF语句,但它似乎只是从男性和女性表中删除年龄变量:

if sex="F" then do;
    drop age;
end;
Run Code Online (Sandbox Code Playgroud)

我是SAS的新手,所以任何帮助都将不胜感激!

use*_*489 5

在SAS中运行数据步骤时,某些语句在编译期间处理,其他语句随后在执行期间处理.在这种情况下,drop语句在if-then逻辑之前处理,因此您不能使用它来有条件地删除列.

或者,您可以age为每个受影响的行输出缺失值,例如

if sex = 'F' then call missing(age);
Run Code Online (Sandbox Code Playgroud)

或者您可以在一个输出数据集上使用drop子句但不能在另一个输出数据集上使用

data boys girls(drop=age);
  set sashelp.class;
  if sex = 'F' then output girls;
  else if sex = 'M' then output boys;
run;
Run Code Online (Sandbox Code Playgroud)

  • 通常在SAS中,应始终避免分割这样的数据集.使用单个大数据集和适当的`by`语句更容易. (3认同)