2017-08-25 67 views
-1

我有一个简单的数据,看起来像这样首先填充空白。在SAS

+----------+------+--------+ 
| cis_code | yymm | sector | 
+----------+------+--------+ 
| CTAGBTH | 1707 | BANK | 
| CTAGBTH | 1706 |  | 
| CTAGBTH | 1705 |  | 
| CTAGBTH | 1703 |  | 
| CTAGBTH | 1702 | RETAIL | 
| CTAGBTH | 1701 |  | 
| CTAGBTH | 1612 |  | 
| CTAGBTG | 1703 |  | 
| CTAGBTG | 1702 | AGRI | 
| CTAGBTG | 1701 |  | 
| CTAGBTG | 1612 | RETAIL | 
| CTAGBET | 1705 |  | 
| CTAGBET | 1510 | FSI | 
| CTAGBET | 1504 |  | 
+----------+------+--------+ 
在这个问题

我想创建一个新的变量sector_summary其中空白应该通过与cid_code变化的行业所取代。我曾尝试使用first.yymm和first.sector,但不幸的是没有任何工作。我也尝试了一些if语句,但不确定if语句是否适用于所有条件。该数据应该是这样的

+-----------+-------+---------+---------------+ 
| cis_code | yymm | sector | Sector_Group | 
+-----------+-------+---------+---------------+ 
| CTAGBET | 1705 |   |    | 
| CTAGBET | 1510 | FSI | FSI   | 
| CTAGBET | 1504 |   | FSI   | 
| CTAGBTG | 1703 |   |    | 
| CTAGBTG | 1702 | AGRI | AGRI   | 
| CTAGBTG | 1701 |   | AGRI   | 
| CTAGBTG | 1612 | RETAIL | RETAIL  | 
| CTAGBTH | 1707 | BANK | BANK   | 
| CTAGBTH | 1706 |   | BANK   | 
| CTAGBTH | 1705 | BANK |    | 
| CTAGBTH | 1703 | BANK |    | 
| CTAGBTH | 1702 | RETAIL | RETAIL  | 
| CTAGBTH | 1701 |   | RETAIL  | 
| CTAGBTH | 1612 |   | RETAIL  | 
+-----------+-------+---------+---------------+ 

所以基本上,如果没有为给定YYMM一个空白扇区的扇区群也将是空白随之而来的几个月之前,除非有其被替换另一个部门,这将在接下来的几个月里会继续在那里。
请让我知道如何去做

回答

2

你只需要保留这些值。它也看起来像你需要排序数据(或在BY声明中使用NOTSORTED选项)。

data want ; 
    set have ; 
    by cis_code descending yymm ; 
    if first.cis_code or not missing(sector) then sector_group=sector; 
    retain sector_group; 
run;