Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一个值赋给";由「;组-SAS_Sas - Fatal编程技术网

将一个值赋给";由「;组-SAS

将一个值赋给";由「;组-SAS,sas,Sas,我花了相当多的时间在堆栈溢出上寻找其他问题的答案,但我真的被困在这个问题上,所以我终于问了一个问题 我在SAS中有一个fish数据集,包括: 每个垂钓者的唯一ID 三个不同的变量与该垂钓者在每个类别中释放的鱼的数量:超过法定尺寸,低于法定尺寸,以及释放的死鱼 基于每个ID的行数的序列号(fishno);1到该ID的最后一行 要创建的变量:处置--可以是“死”选项下带有“legal”的字符变量,甚至可以是1-3的数值 它最初设置为每个唯一ID一行,但我将其设置为现在每丢弃一条鱼一行(即,如果有3条

我花了相当多的时间在堆栈溢出上寻找其他问题的答案,但我真的被困在这个问题上,所以我终于问了一个问题

我在SAS中有一个fish数据集,包括:

  • 每个垂钓者的唯一ID
  • 三个不同的变量与该垂钓者在每个类别中释放的鱼的数量:超过法定尺寸低于法定尺寸,以及释放的死鱼
  • 基于每个ID的行数的序列号(fishno);1到该ID的最后一行
  • 要创建的变量:处置--可以是“死”选项下带有“legal”的字符变量,甚至可以是1-3的数值
  • 它最初设置为每个唯一ID一行,但我将其设置为现在每丢弃一条鱼一行(即,如果有3条法定尺寸和2条尺寸不足的鱼,我现在有5行)

    我需要通过唯一的ID来指定每一行/每一条鱼是合法发布的、尺寸过小的还是死亡的。在上一个示例中,对于唯一ID,我需要将3行分配给“legal”处置,将2行分配给“under”处置

    我尝试了first.var语句和if-then-do语句;玩弄宏;什么都不管用,我被困在这里了。有什么我应该尝试的随机分配吗?有没有更容易的方法让我错过

    下面的数据示例

    谢谢

    Excel格式的数据


    假设您已经有FISHNO变量,那么需要有一些方法将每条鱼指定为合法、死亡或尺寸过小。以下代码将按该顺序分配处置:

    data have;
    input ID LEGAL DEAD UNDERSIZE FISHNO;
    datalines;
    15 1 0 1 1
    15 1 0 1 2
    29 2 0 2 1
    29 2 0 2 2
    29 2 0 2 3
    29 2 0 2 4
    38 1 0 1 1
    38 1 0 1 2
    53 1 0 1 1
    53 1 0 1 2
    55 1 0 1 1
    55 1 0 1 2
    ;
    run;
    
    data want;
    set have;
    if legal>0 and legal>=fishno then disposition = 'legal';
    else if dead>0  and legal+dead>=fishno then disposition = 'dead';
    else if undersize>0 and legal+dead+undersize>=fishno then disposition = 'under';
    run;
    

    哦,太谢谢你了!!我知道必须有一种更简单、更优雅的方式来做这件事,我被困在了看树不见林的境地。我没有意识到,仅仅添加变量并使用fishno分配变量就可以用于唯一ID,但这是有意义的。