在sas中选择名称较长的观察值或行

在sas中选择名称较长的观察值或行,sas,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 我们必须在all na

我有一个这样的数据集

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

我们必须在all name变量中选择名称较长的数据,因此我们必须选择名称较长的观测值,以便数据集b仅包含一个数据。

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

下面是一个使用
proc-sql

proc sql;
create table b as 
select * from a 
    where
        length(name) = (select max(length(name) from a) ;
quit;

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

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;

这是一种测试/训练练习吗?使用
length()。这甚至不是一个非常特殊的问题。如果您认为答案可以回答您的问题,请接受答案。