簡體   English   中英

SAS:在組內按組為變量值編碼一個虛擬變量

[英]SAS: Coding a dummy variable for a value of a variable by group within group

我有一個CASE_ID(xy和z)數據集,每個CASE_ID的一組多個日期(包括重復的日期)和一個變量VAR。 我想在一個組內按組創建一個虛擬變量DUMMYVAR,如果在某個特定日期,如果CASE_ID x的值是VAR =“ C”,那么該日期對應於CASE_ID x的所有觀察值的值DUMMYVAR = 1。

我相信Classic 2XDOW將是關鍵,但這是我第三周使用SAS,並且在這里很難被兩個BY組獲得。

我已經參考並嘗試在此處編寫Haikuo代碼的變體:

 PROC SORT have;
         by CASE_ID DATE;
    RUN;

    data want;
    do until (last.DATE);
      set HAVE;
       by date notsorted; 
       if var='c' then DUMMYVAR=1; 

    do until (last.DATE);
      set HAVE;
       by DATE notsorted;

       if DATE=1 then ????????

    end;
    run;

更改您的BY語句以匹配您正在執行的分組。 在第二個循環中,添加一個簡單的OUTPUT; 聲明。 然后,新數據集將具有原始數據集中的所有行以及新變量DUMMYVAR。

data want;
  do until (last.DATE);
    set HAVE;
    by case_id date; 
    if var='c' then DUMMYVAR=1; 
  end;
  do until (last.DATE);
   set HAVE;
    by case_id date; 
    output;
  end;
run;

這將創建值為1或缺失的變量DUMMYVAR。 如果希望值是1或0,則可以在第一個DO循環之前將其設置為0。 或添加if first.date then dummyvar=0;添加if first.date then dummyvar=0; 在現有IF語句之前的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM