选择观察或在sas中具有更长名称的行

时间:2016-08-11 09:43:27

标签: sas

我有像这样的数据集

id   name          age sex
1  Murray, W       23   M
2  Bonaventure, T  24   F
3  Eberhardt, S    56   M
4  LaMance, K      78   M
5  Underwood, K    23   F

我们必须从数据集a

创建数据集b
id   name          age sex
2  Bonaventure, T  24   F

我们必须在所有名称变量中选择名称较长的数据,因此我们必须选择名称较长的观察,因此数据集b只包含一个数据。

2 个答案:

答案 0 :(得分:1)

您需要首先找到所有记录的最大长度,然后将其与每个单独记录的长度进行比较。请记住,不止一条记录可以满足此标准。在你的例子中只有一个。

以下是使用proc sql

的解决方案
proc sql;
create table b as 
select * from a 
    where
        length(name) = (select max(length(name) from a) ;
quit;

答案 1 :(得分:0)

你可以做很多事情。 这里有一个示例,说明如何仅使用一个数据步骤获得正确的结果。

data b;
    retain max obs 0;

    set a end=last;

    if lengthn(name) > max then do;
        max = lengthn(name);
        obs = _N_;
    end;

    if last;
    set a point=obs;
    drop max obs;
run;