删除SAS中的部分数据

时间:2016-07-29 20:28:28

标签: split sas conditional-statements

我有一个名为a的数据集,我想删除名称为" AVG_OPT_PR"的列。 ='。'以下代码有效:

DATA work.a1;
  SET work.a;
    IF AVG_OPT_PR = '.' THEN delete;
RUN;

但是,还有另一个名为" Period"的列,我只想删除一个位置内的行,所有" AVG_OPT_PR" ='。'。我怎么能这样做?

例如,数据如下:

Location_id |     Period  | AVG_OPT_PR 
------------+-------------+-----------
   L_1      | 2 weeks     |  105 
   L_1      | 1 month     |   .
   ...      |    ...      |  ... 
   L_1      | 1  year     |  103 
   L_2      | 2 weeks     |   . 
   L_2      | 1 month     |   . 
   ...      |    ...      |  ... 
   L_2      | 1 year      |   .   

因此,位置id等于" L_2"被删除,但" L_1"的所有数据都被删除被存管。

谢谢!

2 个答案:

答案 0 :(得分:1)

为每个avg_opt_pr选择location_id的最大值(如果缺少最大值,它将显示为。),将其合并回第一个数据集,然后删除所有{{1}最大的缺失。

location_ids

答案 1 :(得分:0)

如果只想删除同时AVG_OPT_PR . Location_idL-2 DATA work.a1; SET work.a; IF AVG_OPT_PR = '.' and Location_id = 'L_2' THEN delete; RUN; 的行,那么这应该可行精细。

IF THEN DELETE

还有一些其他示例可以扩展您如何使用AVG_OPT_PR

处理此问题

要删除. Location_id L_1的所有行,L_1 等于DATA work.a1; SET work.a; IF AVG_OPT_PR = '.' and Location_id ^= 'L_1' THEN delete; RUN; 的所有行(AVG_OPT_PR以外的所有行})

.

并删除Location_id IN ('L_2','L_3','L_4',...) DATA work.a1; SET work.a; IF AVG_OPT_PR = '.' and Location_id IN ('L_2','L_3','L_4') THEN delete; RUN; 的所有行,其中String s= System.getPropety("projectName/filename"); File f = new File(s);是列出的String s= System.getPropety("projectName/filename"); File f = new File(s);

之一
std::string s(size, '\0');